То, что я знаю, можно определить, находится ли страница на переднем плане или на заднем плане - или, точнее, если есть фокус или нет фокуса.
var focus = true;
window.onblur = function() { focus = false; action(); }
window.onfocus = function() { focus = true; action(); }
document.onblur = window.onblur;
document.focus = window.focus;
function action(){
if(focus) {
document.body.style.background = "green";
} else {
document.body.style.background = "lightgray";
}
}
try click inside and then outside
В приведенном выше фрагменте кода используются прослушиватели событий onblur
и onfocus
для событий focus
и blur
.
Лучше использовать API видимости :
- , работает при переключении вкладок (страница может обнаружить, что пользователь имеетоткрыл еще одну вкладку)
Примечание. Хотя onblur и onfocus сообщат вам, переключает ли пользователь окна, это не обязательно означает, что они скрыты.Страницы становятся скрытыми, только когда пользователь переключает вкладки или сворачивает окно браузера, содержащее вкладку.
см. Определить, активна ли вкладка браузера или пользователь отключился
http://jsbin.com/lowocepazo/edit?js,output
Для прокрутки имеется Intersection Observer
, позволяющий асинхронно наблюдать изменения пересечения целевого элемента с помощьюэлемент предка или область просмотра документа верхнего уровня
// РЕДАКТИРОВАТЬ: В настоящее время невозможно обнаружить такие случаи, как, например, в первом видео, которое вы разместили (в 2:09), когдадругое окно затенено некоторым элементом:
Если я ошибаюсь, исправьте меня.
относящиеся: