Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как определить активное окно/вкладку? (https://javascript.ru/forum/events/2498-kak-opredelit-aktivnoe-okno-vkladku.html)

Chameleon 06.01.2009 13:53

Как определить активное окно/вкладку?
 
Вопрос собственно в том, как определить активное окно/вкладку браузера?

Поясню зачем нужно, возможно вы предложите как сделать по другому:
Есть web-страница, которая раз в 10 секунд опрашивает сервер на предмет наступления определенного события.
Если событие наступило - об этом надо сообщить пользователю (показать сообщение и сразу его скрыть) и удалить информацию о нем (о событии) с сервера.

Все это реализовано. Но проблема в том, что у пользователя эта web-страница может быть открыта неоднократно (в разных вкладках или окнах браузера). И каждая такая страница будет опрашивать сервер. И та, которая опросит первой после наступления события - та его и отобразит. А надо, чтобы отображала только та на которую смотрит пользователь. Т.е. активная. Как ее вычислить?

ZoNT 11.01.2009 12:05

не давать открывать пользователю больше одной страницы с данного сайта одновременно.

Chameleon 11.01.2009 12:28

:)))

Жестоко.

ИМХО, самое глупое решение.

Kolyaj 11.01.2009 12:52

Отлавливать focus/blur у каждой страницы. На той, у которой был последний focus -- отображать. blur, пожалуй, можно даже не отлавливать.

Chameleon 11.01.2009 13:10

Цитата:

Сообщение от Kolyaj (Сообщение 10554)
Отлавливать focus/blur у каждой страницы. На той, у которой был последний focus -- отображать. blur, пожалуй, можно даже не отлавливать.

Во!
Вот за это спасибо.

Я сделал див на всю страницу (самый внешний) и для него сделал:
<div onmouseover="focusHere();" onmouseout="focusOut();">

В обработчиках устанавливаю и снимаю соответствующий флаг, который проверяю перед обращением к серверу.

Просто и эффективно. Спасибо.

imapo 19.03.2012 07:59

Цитата:

Я сделал див на всю страницу
Я вот так сделал без лишних движений на jQuery:
$(window).blur(function() {
// Здесь что угодно после ухода в другую вкладку
});

$(window).focus(function() {
// Здесь что угодно после возвращения во вкладку
});


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