Но теперь такая проблема: при открытии страницы в новой вкладке, время на ней начинает считаться. А этого быть не должно. Как отследить, что страница была открыта именно в новой вкладке и по факту её еще не открывали для просмотра?
|
Цитата:
|
Вот весь код:
var isActive = true; function onBlur() { // окно теряет фокус isActive = false; chrome.runtime.sendMessage({site:sait,time:localStorage[sait]}); localStorage[sait] = '0'; } function onFocus() {// окно получает фокус isActive = true; } window.onbeforeunload = onBlur; window.onfocus = onFocus; window.onblur = onBlur; function sec() //выполняется каждую секунду { if (isActive)//если страница активна { localStorage[sait] = parseInt(localStorage[sait],10) +1; } } var sait=location.hostname; localStorage[sait] = '0'; setInterval(sec, 1000);// использовать функцию |
Скрипт считает время, проведенное на сайте. По начальным условиям isActive = true; По этому и начинается сразу отсчет, даже если страница открыта в новой складке. Если по умолчанию сделать isActive = false; то время не будет считаться, ока не кликнешь на саму страницу, а это тоже не подходит
|
У упоротых, простите, упорных людей порой такое бывает - задача становится нерешаемой из-за придуманных проблем.
|
Я не понял, где придуманная проблема?
|
Цитата:
Цитата:
Цитата:
|
бля, реально. Просто открыл почитать про page visibility API и на хабре нашел, что нужно библиотеку подрубать. Сейчас покопал, ввел строчку
if(document.webkitVisibilityState == 'visible')//если страница активна { localStorage[sait] = parseInt(localStorage[sait],10) +1; } И все проблемы решились=) На видео тоже время стало считаться! Спасибо за помощь |
Часовой пояс GMT +3, время: 16:04. |