Оно срабатывает:
– когда я переключаюсь на другую вкладку в окне браузера.
- Когда я нажимаю кнопки свертывания/восстановления окна браузера.
Оно не срабатывает:
- Когда я переключаюсь на другое окно/программу с помощью ALT+TAB.
- Когда я переключаюсь на другое окно/программу, щелкая по панели задач.
Документация по API видимости страниц W3: http://www.w3.org/TR/page-visibility/
В спецификации нет определения «видимости страницы» относительно переключения программ ALT+TAB/. Я предполагаю, что это как-то связано между ОС и браузером.
ТЕСТИРОВАНО В
- Браузеры:
Chrome 40.0.2214.115 m / Firefox 36.0.1 / Internet 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
Мобильная версия