Событие для вкладки браузера скрыто / показано? - PullRequest
4 голосов
/ 20 сентября 2011

Есть ли какое-либо событие DOM, когда вкладка браузера теряет / приобретает фокус? Я знаю, что на window есть события blur и focus, но они также запускаются, когда окно браузера в целом теряет фокус. В этом случае браузер может оставаться видимым для пользователя. Конечно, такое событие будет зависеть от браузера, но это нормально.

Причина, по которой я этого хочу, заключается в том, что я запускаю анимации, которые могут занимать довольно много времени процессора. Когда вкладка браузера не видна, нет причин продолжать анимацию. Теперь я знаю, что современные браузеры уменьшают разрешение таймера фоновых вкладок, но я мог бы на самом деле приостановить анимацию, чтобы не тратить время на процессор.

Если вам интересно, вот что я пишу: http://panzi.github.com/Browser-Ponies/

Ответы [ 3 ]

5 голосов
/ 31 мая 2012

По крайней мере, Google Chrome поддерживает событие webkitvisibilitychange и свойство document.webkitHidden.См. API видимости .Но, похоже, он срабатывает только при изменении показанной вкладки, а не при сворачивании всего окна.Похоже, что для Internet Explorer также есть событие visibilitychange, но документация ничего об этом не говорит.

2 голосов
/ 20 сентября 2011

Самое близкое, что, я думаю, вы найдете, это лучший ответ здесь:

Есть ли способ отследить фокус на вкладке с помощью Javascript?

1 голос
/ 04 января 2015

Теперь у них есть именно то, что нужно было: https://developer.mozilla.org/en-US/docs/Web/Guide/User_experience/Using_the_Page_Visibility_API

...