Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как узнать на вкладке ли пользователь? (https://javascript.ru/forum/misc/42138-kak-uznat-na-vkladke-li-polzovatel.html)

natureproj 22.10.2013 02:05

Но теперь такая проблема: при открытии страницы в новой вкладке, время на ней начинает считаться. А этого быть не должно. Как отследить, что страница была открыта именно в новой вкладке и по факту её еще не открывали для просмотра?

BETEPAH 22.10.2013 10:58

Цитата:

Сообщение от natureproj
время на ней начинает считаться

какое такое время? Может давайте не на кофейной гуще гадать, а на неправильно работающем коде? Ссылку можно?

natureproj 22.10.2013 14:25

Вот весь код:
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);// использовать функцию

natureproj 22.10.2013 14:28

Скрипт считает время, проведенное на сайте. По начальным условиям isActive = true; По этому и начинается сразу отсчет, даже если страница открыта в новой складке. Если по умолчанию сделать isActive = false; то время не будет считаться, ока не кликнешь на саму страницу, а это тоже не подходит

danik.js 22.10.2013 14:54

У упоротых, простите, упорных людей порой такое бывает - задача становится нерешаемой из-за придуманных проблем.

natureproj 22.10.2013 16:43

Я не понял, где придуманная проблема?

danik.js 22.10.2013 17:26

Цитата:

Сообщение от natureproj
Там нужно библиотеку подключить.

Цитата:

Сообщение от natureproj
Не совсем подходит

Цитата:

Сообщение от danik.js
Какую?

Ну тебе видней то, правда? Тыж профи.

natureproj 22.10.2013 20:29

бля, реально. Просто открыл почитать про page visibility API и на хабре нашел, что нужно библиотеку подрубать. Сейчас покопал, ввел строчку
if(document.webkitVisibilityState == 'visible')//если страница активна
	    {
			localStorage[sait] =  parseInt(localStorage[sait],10) +1;
		}

И все проблемы решились=)
На видео тоже время стало считаться!
Спасибо за помощь


Часовой пояс GMT +3, время: 16:04.