Оно срабатывает:
– когда я переключаюсь на другую вкладку внутри окна браузера.
- Когда я нажимаю кнопки свертывания/восстановления окна браузера.
Это не срабатывает:
– Когда я переключаюсь на другое окно/программу с помощью ALT+TAB.
- Когда я переключаюсь на другое окно/программу, нажимая на панель задач.
Документация по W3 Page Visibility API: http://www.w3.org/TR/page-visibility/
В спецификации нет определения «видимости страницы» относительно переключения ALT+TAB/программы. Я предполагаю, что это как-то связано между ОС и браузером.
ТЕСТИРОВАНО В
- Браузеры:
Chrome 40.0.2214.115 m / Firefox 36.0.1 / Интернет Explorer 11.0.9600.17107 - ОС: Windows 8.1
Есть ли способ исправить это поведение? Реализация довольно проста: я слушаю событие "visibilitychange" с помощью jQuery, а затем в его обратном вызове проверяю значение "document.visibilityState", но проблема в том, что событие не срабатывает, когда ожидается.
Код: Выделить всё
$(document).on('visibilitychange', function() {
if(document.visibilityState == 'hidden') {
// page is hidden
} else {
// page is visible
}
});
Код: Выделить всё
if(document.addEventListener){
document.addEventListener("visibilitychange", function() {
// check for page visibility
});
}
Код: Выделить всё
ifvisible.on('blur', function() {
// page is hidden
});
ifvisible.on('focus', function() {
// page is visible
});
Любая помощь или предложения?
ОБНОВЛЕНИЕ
Я пробовал использовать разные префиксы поставщиков для имени события (visibilitychange, webkitvisibilitychange, mozvisibilitychange, msvisibilitychange), но, тем не менее, событие не запускается, когда я переключаюсь на другую программу на панели задач или ALT+TAB, или даже если я открываю меню «Пуск» в Windows с помощью клавиши Windows, которая охватывает все экран.
Я могу воспроизвести ту же проблему в Chrome, Firefox и Internet Explorer.
ОБНОВЛЕНИЕ № 2
Вот обзорный пост, который я написал для этой проблемы, и обходной путь на чистом Javascript для решения возникших проблем.
ОБНОВЛЕНИЕ №3
Отредактировано, чтобы включить копию исходного сообщения в блоге. (см. принятый ответ)
Подробнее здесь: https://stackoverflow.com/questions/289 ... -with-altt
Мобильная версия