Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите исправить таймер на вкладках в Хроме, Таймер на вкладках в Хроме 
:(
    Опции темы
YNA
Дата 27.1.2016, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.1.2016

Репутация: нет
Всего: нет



Здравствуйте. Помогите скорректировать юзерскрипт для ГуглХрома.
Было с пол года назад нашкрябал код для 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, так и отдельно. 

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  b2a414b75b93.png 248,67 Kb
PM MAIL   Вверх
ksnk
Дата 27.1.2016, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



А вот так будет работать? Если нужно менять время не по полному локейшн, без учета якорей, можно использовать свойства
Код

var oldLocation='',defTitle=document.title;
window.setInterval(function(){
var cLocation=document.location.toString();
if(cLocation!=oldLocation){
  startTime=new Date().getTime();
  oldLocation=cLocaion;
}
document.title=Math.round((new Date().getTime()-startTime)/1000)+' - '+defTitle;
}, 1000);



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
YNA
Дата 27.1.2016, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.1.2016

Репутация: нет
Всего: нет



Цитата(ksnk @ 27.1.2016,  09:33)
А вот так будет работать? Если нужно менять время не по полному локейшн, без учета якорей, можно использовать свойства
Код

var oldLocation='',defTitle=document.title;
window.setInterval(function(){
var cLocation=document.location.toString();
if(cLocation!=oldLocation){
  startTime=new Date().getTime();
  oldLocation=cLocaion;
}
document.title=Math.round((new Date().getTime()-startTime)/1000)+' - '+defTitle;
}, 1000);

Спасибо. Сейчас попробовал, но не получилось. Вообще не запустился таймер. Я пожалуй когда домой приду, нормально сяду и спокойно по новой опробую предлагаемый Вами вариант. Видимо я сейчас что-то не так сделал.
PM MAIL   Вверх
ksnk
Дата 27.1.2016, 11:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Вот такое у меня заработало.
Код

var oldLocation='',defTitle=document.title, startTime=new Date().getTime();
window.setInterval(function(){
    var cLocation=document.location.toString();
    if(cLocation!=oldLocation){
        startTime=new Date().getTime();
        defTitle=document.title.replace(/^\d*\s-\s/,'');;
        oldLocation=cLocation;
    }
    document.title=Math.round((new Date().getTime()-startTime)/1000)+' - '+defTitle;
}, 1000);

Поставил себе TemperMonkey, забавная штука...
Нужно учитывать, что ютюб, в основном, работает через https и в параметре @match нужно указывать https://*/* вместо обычного http 

P.S. исправил коррекцию заголовка, иначе при ajax обновлении страницы старые значения времени оставались на странице

Это сообщение отредактировал(а) ksnk - 27.1.2016, 17:56


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
YNA
Дата 27.1.2016, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.1.2016

Репутация: нет
Всего: нет



Цитата(ksnk @ 27.1.2016,  11:18)
Вот такое у меня заработало...

Ура, наконец-то...
В общем огромное спасибо! Уже неделю мучаю, точней мучал после работы этот скрипт и никак не выходило.
Это то что и хотел получить)


В @match помимо https://*/*  добавил и http://*/* так как проверяя наткнулся и на такое))


Хотел еще, если Вас не сильно отвлечет, можете подсказать как в @exclude прописать пустые страницы, чтоб на страницах не содержащих всякие там урлы, таких как главная, или (к чему я склоняюсь) это отдельно еще скрпит надо дописывать?

P/s спасибо за коррекцию заголовка, через раз у меня такое проскакивало, думал не отвлекать с этой проблемкой, но Вы сами заметили и исправили)

Это сообщение отредактировал(а) YNA - 27.1.2016, 18:32
PM MAIL   Вверх
ksnk
Дата 27.1.2016, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Насколько я понял из документации - можно указывать сколько угодно тегов match, или include, что то же самое и сколько угодно тегов exclude. Каждый тег на новой строке.

Как определить "главную страницу" - не понял. По маскам, которые используются в тегах, складывается ощущение, что в конец любой маски автоматически дописывается звёздочка.

Скорее всего - надо в скрипте определять.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
YNA
Дата 28.1.2016, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.1.2016

Репутация: нет
Всего: нет



Цитата(ksnk @ 27.1.2016,  21:56)

Скорее всего - надо в скрипте определять.

Понятно. Ну это уже не столь важное, не спеша в свободное время думаю достряпаю, главное все основное теперь как надо.
Спасибо за помощь. Не думал, что кто-то так быстро отзовется и поможет smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0575 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.