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 14.10.2013 17:24

как узнать на вкладке ли пользователь? *(РЕШЕНО!)
 
Доброго времени суток, такой вопрос:
Как узнать, находится ли пользователь на данной странице, вкладке. Менять код самой странице нельзя при том, только через JS .
пробую так:
window.onblur = function () {
document.title='документ неактивен';
}
window.onfocus = function () {
document.title='документ снова активен';
}
onblur работает отлично, а onfocus активизируется только в том случае, если кликнуть по сайту.
Пожалуйста, помогите в проблемкой. Всем ответившим +

BETEPAH 14.10.2013 17:40

У меня вот так работает:
// Проверка активна ли в настоящий момент вкладка браузера
var isActive = true;
function onBlur() { // окно теряет фокус
	isActive = false;
// что-то делаем
}
function onFocus() {// окно получает фокус
	isActive = true;
// что-то делаем
}
if (/*@cc_on!@*/false) { // для Internet Explorer
	document.onfocusin = onFocus;
	document.onfocusout = onBlur;
} else {
	window.onfocus = onFocus;
	window.onblur = onBlur;
}

natureproj 14.10.2013 19:18

И что? То же самое! Активируется только после клика

natureproj 14.10.2013 19:20

а некоторым сайтам и клика мало! Обязательно, чтобы с другой вкладки переключение было. А если напрямую перейти и лазить по сайту, то будет не активно!
Может как-то отследить движение мыши на поле сайта? (обязательно чтобы страницу сайта не меняя!)

BETEPAH 14.10.2013 19:26

Цитата:

Сообщение от natureproj
а некоторым сайтам и клика мало!

каким таким некоторым сайтам? Меня терзают смутные сомнения :)
Цитата:

Сообщение от natureproj
Обязательно, чтобы с другой вкладки переключение было. А если напрямую и лазить по сайту, то будет не активно!

А если напрямую и лазить по сайту, то для этого я и сделал параметр isActive, который показывает активна ли вкладка в текущий момент.
Код, который я привел, работает на реальном проекте уже более года. При получении вкладкой фокуса (без кликов по странице) скрипт отрабатывает своё дело (в моем случае - это чат - выключается звук сообщений и перемещается указатель последнего прочитанного сообщения)

danik.js 14.10.2013 19:42

Есть же page visibility API, правда только в относительно новых браузерах.

natureproj 14.10.2013 23:13

Цитата:

Сообщение от danik.js (Сообщение 276446)
Есть же page visibility API, правда только в относительно новых браузерах.

Там нужно библиотеку подключить. Чтобы в моём случае это сделать, то придется на каждый сайт, на который заходит пользователь, добавлять в код страницы подключение библиотеки. Не совсем подходит


Ветеран, толи я что-то не понимаю, но при открытии страницы запускается функция onBlur() и соответственно isActive = false;
Далее я это использовать не могу

BETEPAH 15.10.2013 08:38

Цитата:

Сообщение от natureproj
Ветеран, толи я что-то не понимаю, но при открытии страницы запускается функция onBlur()

Странные у вас страницы. С какой стати им при открытии запускать onBlur? Толи вы что-то не понимаете.
Цитата:

Сообщение от natureproj
Далее я это использовать не могу

ОКей. Айм со сорри.

danik.js 15.10.2013 09:36

Цитата:

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

Какую?

natureproj 15.10.2013 14:50

Цитата:

Сообщение от BETEPAH (Сообщение 276503)
Странные у вас страницы. С какой стати им при открытии запускать onBlur? Толи вы что-то не понимаете.

ОКей. Айм со сорри.

Да, сейчас проверил - гуд работает. В пролый раз почему-то онБлур сразу запускалась. Спасибо за помощь

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


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