| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: для новичков > Помогите исправить таймер на вкладках в Хроме |
| Автор: YNA 27.1.2016, 02:01 |
| Здравствуйте. Помогите скорректировать юзерскрипт для ГуглХрома. Было с пол года назад нашкрябал код для Mozilla Firefox (там использовал с помощью дополнения Greasemonkey) и там более менее норм работает. Но вот мозила не совсем удовлетворяет меня и хочу поднастроить под любимый Хром (в нем пытаюсь нормально запустить также через дополнение, Tampermonkey). Можно конечно и без дополнения подобное создать, установив сразу как свое Расширение, но до этого мне совсем далеко по знаниям. В общем мой код (в Tampermonkey мой вариант описания директив не нравится и по умолчанию предлагается другой, но скрипт все же запускается): // ==UserScript== // @name Pages Timer // @namespace my // @description Таймер открытой вкладки. Сколько открыта страница. // @version 1 // @include * // @grant none // ==/UserScript== defTitle=document.title; startTime=new Date().getTime(); window.setInterval(function(){ document.title=Math.round((new Date().getTime()-startTime)/1000)+' - '+defTitle; }, 1000); Проблема следующая: Таймер не запускается по новой при изменении последней части урл-адреса. К примеру в ЮТубе если смотреть альбом, то таймер при запуске нового видео продолжает отсчет, хотя конечный адрес то изменился и надо чтоб отчет начался по новой, с 0. Также и на некоторых сайтах при переходе в другой раздел. Хочу, чтоб таймер запускался по новой на всех страницах сайта, если урл адрес хоть немного изменился. При это запускается там, где не нужен -на главной, пустой странице (в Firefox такой проблемки нет). Хочу исключить пустую страницу, чтоб таймер запускался только если открыт какой-то запрос. Пробовал в директивах описания скрипта @include http://*/* -не помогло, если точней, то таймер запускается не на всех страницах сайтов, при этом к примеру в ютубе вообще не запускается (но зато на пустой, главной, странице не запускается). Также не помогло использование @match, как вместе с @include, так и отдельно. |
| Автор: ksnk 27.1.2016, 09:33 | ||
А вот так будет работать? Если нужно менять время не по полному локейшн, без учета якорей, можно использовать свойства
|
| Автор: YNA 27.1.2016, 10:23 | ||||
Спасибо. Сейчас попробовал, но не получилось. Вообще не запустился таймер. Я пожалуй когда домой приду, нормально сяду и спокойно по новой опробую предлагаемый Вами вариант. Видимо я сейчас что-то не так сделал. |
| Автор: ksnk 27.1.2016, 11:18 | ||
Вот такое у меня заработало.
Поставил себе TemperMonkey, забавная штука... Нужно учитывать, что ютюб, в основном, работает через https и в параметре @match нужно указывать https://*/* вместо обычного http P.S. исправил коррекцию заголовка, иначе при ajax обновлении страницы старые значения времени оставались на странице |
| Автор: YNA 27.1.2016, 18:27 | ||
Ура, наконец-то... В общем огромное спасибо! Уже неделю мучаю, точней мучал после работы этот скрипт и никак не выходило. Это то что и хотел получить) В @match помимо https://*/* добавил и http://*/* так как проверяя наткнулся и на такое)) Хотел еще, если Вас не сильно отвлечет, можете подсказать как в @exclude прописать пустые страницы, чтоб на страницах не содержащих всякие там урлы, таких как главная, или (к чему я склоняюсь) это отдельно еще скрпит надо дописывать? P/s спасибо за коррекцию заголовка, через раз у меня такое проскакивало, думал не отвлекать с этой проблемкой, но Вы сами заметили и исправили) |
| Автор: ksnk 27.1.2016, 21:56 |
| Насколько я понял из документации - можно указывать сколько угодно тегов match, или include, что то же самое и сколько угодно тегов exclude. Каждый тег на новой строке. Как определить "главную страницу" - не понял. По маскам, которые используются в тегах, складывается ощущение, что в конец любой маски автоматически дописывается звёздочка. Скорее всего - надо в скрипте определять. |
| Автор: YNA 28.1.2016, 00:36 | ||
Понятно. Ну это уже не столь важное, не спеша в свободное время думаю достряпаю, главное все основное теперь как надо. Спасибо за помощь. Не думал, что кто-то так быстро отзовется и поможет |