Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.10.2013, 17:24
Аспирант
Отправить личное сообщение для natureproj Посмотреть профиль Найти все сообщения от natureproj
 
Регистрация: 11.08.2013
Сообщений: 73

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

Последний раз редактировалось natureproj, 15.10.2013 в 19:34.
Ответить с цитированием
  #2 (permalink)  
Старый 14.10.2013, 17:40
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

У меня вот так работает:
// Проверка активна ли в настоящий момент вкладка браузера
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;
}
Ответить с цитированием
  #3 (permalink)  
Старый 14.10.2013, 19:18
Аспирант
Отправить личное сообщение для natureproj Посмотреть профиль Найти все сообщения от natureproj
 
Регистрация: 11.08.2013
Сообщений: 73

И что? То же самое! Активируется только после клика
Ответить с цитированием
  #4 (permalink)  
Старый 14.10.2013, 19:20
Аспирант
Отправить личное сообщение для natureproj Посмотреть профиль Найти все сообщения от natureproj
 
Регистрация: 11.08.2013
Сообщений: 73

а некоторым сайтам и клика мало! Обязательно, чтобы с другой вкладки переключение было. А если напрямую перейти и лазить по сайту, то будет не активно!
Может как-то отследить движение мыши на поле сайта? (обязательно чтобы страницу сайта не меняя!)
Ответить с цитированием
  #5 (permalink)  
Старый 14.10.2013, 19:26
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от natureproj
а некоторым сайтам и клика мало!
каким таким некоторым сайтам? Меня терзают смутные сомнения
Сообщение от natureproj
Обязательно, чтобы с другой вкладки переключение было. А если напрямую и лазить по сайту, то будет не активно!
А если напрямую и лазить по сайту, то для этого я и сделал параметр isActive, который показывает активна ли вкладка в текущий момент.
Код, который я привел, работает на реальном проекте уже более года. При получении вкладкой фокуса (без кликов по странице) скрипт отрабатывает своё дело (в моем случае - это чат - выключается звук сообщений и перемещается указатель последнего прочитанного сообщения)
Ответить с цитированием
  #6 (permalink)  
Старый 14.10.2013, 19:42
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Есть же page visibility API, правда только в относительно новых браузерах.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 14.10.2013, 23:13
Аспирант
Отправить личное сообщение для natureproj Посмотреть профиль Найти все сообщения от natureproj
 
Регистрация: 11.08.2013
Сообщений: 73

Сообщение от danik.js Посмотреть сообщение
Есть же page visibility API, правда только в относительно новых браузерах.
Там нужно библиотеку подключить. Чтобы в моём случае это сделать, то придется на каждый сайт, на который заходит пользователь, добавлять в код страницы подключение библиотеки. Не совсем подходит


Ветеран, толи я что-то не понимаю, но при открытии страницы запускается функция onBlur() и соответственно isActive = false;
Далее я это использовать не могу
Ответить с цитированием
  #8 (permalink)  
Старый 15.10.2013, 08:38
Аватар для BETEPAH
Профессор
Отправить личное сообщение для BETEPAH Посмотреть профиль Найти все сообщения от BETEPAH
 
Регистрация: 23.06.2011
Сообщений: 1,165

Сообщение от natureproj
Ветеран, толи я что-то не понимаю, но при открытии страницы запускается функция onBlur()
Странные у вас страницы. С какой стати им при открытии запускать onBlur? Толи вы что-то не понимаете.
Сообщение от natureproj
Далее я это использовать не могу
ОКей. Айм со сорри.
Ответить с цитированием
  #9 (permalink)  
Старый 15.10.2013, 09:36
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от natureproj
Там нужно библиотеку подключить
Какую?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #10 (permalink)  
Старый 15.10.2013, 14:50
Аспирант
Отправить личное сообщение для natureproj Посмотреть профиль Найти все сообщения от natureproj
 
Регистрация: 11.08.2013
Сообщений: 73

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

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

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

Последний раз редактировалось natureproj, 22.10.2013 в 03:08.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать что полоса прокрутки коснулся самого низа Грабовский Элементы интерфейса 3 15.01.2012 14:33
Как узнать какой скрипт вызывается при клике по эленету (если это прямо не прописано) Dmitriy Komar Events/DOM/Window 4 08.12.2011 17:21
Массивы. Как узнать ключ, зная значение? jsuse Общие вопросы Javascript 4 24.11.2011 19:03
Как узнать подключен ли JavaScript у пользователя? frost18 Элементы интерфейса 1 26.10.2011 17:16
Как узнать сколько членов в объекте kdie Общие вопросы Javascript 2 30.09.2009 12:28