JavaScript, отслеживание переключения вкладок

Добрый день(вечер). Итак, задача:

Имеется код, принимающий некоторые данные от сервера
   server.on("message", function(){});


При переключении вкладки на другую страницу данные не принимаются- некоторая часть данных теряется.

Необходимо отслеживать потерю фокуса на текущей вкладке, чтобы знать о неполучении части данных.

Как результат хочеться получить что- то вроде этого:
   onFocusWasLost(function(){});


Прошу помочь с нахождением решения. Благодарю за внимание.

UPD1
1. Браузер? окружение?- Хотелось бы общее решение.
2. Плагин, просто код, др (да, а JS уже и на сервере выполняется)- просто код на странице. (Да, знаю, у меня сервер как- раз таки на JS).
3. Обычный запрос, long polling, сокеты- Node.js+ socket.io, хотя какая разница? Это лишь пример того, зачем мне надо отслеживать потерю фокуса на текущей вкладке.

Спасибо за вопросы taliban.

UPD2
Отметил habrahabr.ru/qa/19372/#answer_79083 как решение, попробую в различных браузерах и отпишусь.

UPD3
Opera- срабатывает при смене вкладок и при потере фокуса с окна браузера.
Chrome- срабатывает при потере фокуса с окна браузера. При смене вкладки срабатывает только «window.onblur».
IE- ничего не делает.(title остается неизменным).

Вывод: Решение не совсем то, что надо. Буду изучать habrahabr.ru/post/125833/.
  • Вопрос задан
  • 24806 просмотров
Решения вопроса 1
@artishok
кратко
<html>
    <head>
        <title>тайтл</title>
        <script>
            window.onblur = function () {document.title='документ неактивен'}
            window.onfocus = function () {document.title='документ снова активен'}
        </script>
    </head>
    <body>
        <img src="http://www.google.com.ua/images/nav_logo83.png">
    </body>
</html>


ssms-ka.narod2.ru/Habrahabr.htm
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
spmbt
@spmbt
Фокусов на дивах, из которых обычно состоят табы, нет (или их возможность неоправданно сложно создавать, делая полями ввода, фреймами или contentEditable), поэтому решается это не событиями blur, а кликами. На обработчик клика (новый или имеющийся) вешаете пользовательское событие. Если нужно передавать контекст (кликнутый див таба), то CustomEvent. Получится событие, которое лучше назвать «tabFocus». Его ловите в нужном месте страницы по window.addEventListener(«tabFocus», function(){},!1). Если нужен именно блюр, то он получится с каждого таба, что нагромоздит много кода (по клику на одном табе создавать блюры на всех остальных) с тем же эффектом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы