Существует ли надежный кросс-браузерный способ определения того, что вкладка имеет фокус.
Сценарий состоит в том, что у нас есть приложение, которое регулярно опрашивает цены акций, и если страница не имеет фокуса, мы могли бы прекратить опрос и спасти всех от шума дорожного движения, особенно потому, что люди являются поклонниками открытия нескольких вкладок с различными портфелями.
Есть window.onblur
и window.onfocus
вариант для этого?
javascript
optimization
polling
Фентон
источник
источник
Ответы:
Да,
window.onfocus
иwindow.onblur
должно работать для вашего сценария:http://www.thefutureoftheweb.com/blog/detect-browser-window-focus
источник
onfocus
это кроссбраузер, где упомянутые вами события предназначены только для IE, я не могу понять, почему это было бы для вас хорошим замечанием ..Важное изменение: этот ответ устарел. С момента его написания был представлен API видимости ( mdn , example , spec ). Это лучший способ решить эту проблему.
AFAIK,
focus
иblur
все поддерживаются на ... все. (см. http://www.quirksmode.org/dom/events/index.html ).источник
При поиске этой проблемы я нашел рекомендацию использовать API видимости страницы . Большинство современных браузеров поддерживают этот API в соответствии с пунктом «Могу ли я использовать: http://caniuse.com/#feat=pagevisibility» .
Вот рабочий пример (полученный из этого фрагмента ):
Обновить: приведенном выше примере использовались префиксные свойства для браузеров Gecko и WebKit, но я удалил эту реализацию, потому что эти браузеры уже некоторое время предлагают API видимости страницы без префикса. Я сохранил специфический префикс Microsoft, чтобы оставаться совместимым с IE10.
источник
Удивительно видеть, что никто не упомянул
document.hasFocus
MDN имеет больше информации.
источник
Да, те должны работать на вас. Вы только что напомнили мне об этой ссылке, с которой я столкнулся, которая использует эти методы. интересно читать
источник
Я бы сделал это следующим образом (ссылка http://www.w3.org/TR/page-visibility/ ):
источник
Веселье и простота в использовании!
Следующий плагин пройдет стандартный тест для различных версий IE, Chrome, Firefox, Safari и т. Д. И соответственно установит заявленные вами методы. Он также занимается такими вопросами, как:
Использовать так же просто, как: прокрутить вниз до « Run Snippet »
источник
jQuery(window).blur/focus
, что было нежелательным для многих, поэтому одна из причин, по которой я сделал этот плагин. Плагин предназначен для предоставления того, что jQuery еще не делает