¿Existe una forma confiable de navegador cruzado para detectar que una pestaña tiene foco?
El escenario es que tenemos una aplicación que sondea regularmente los precios de las acciones, y si la página no tiene foco, podríamos detener el sondeo y ahorrar a todos el ruido del tráfico, especialmente porque las personas son fanáticas de abrir varias pestañas con diferentes carteras.
¿Es window.onblur
y window.onfocus
una opción para esto?
javascript
optimization
polling
Fenton
fuente
fuente
Respuestas:
Sí,
window.onfocus
ywindow.onblur
debería funcionar para su escenario:http://www.thefutureoftheweb.com/blog/detect-browser-window-focus
fuente
onfocus
es crossbrowser, donde los eventos que has mencionado son solo para IE, no puedo ver por qué esto sería considerado una buena nota para ti ..Edición importante: esta respuesta está desactualizada. Desde que lo escribió, se introdujo la API de visibilidad ( mdn , ejemplo , especificación ). Es la mejor manera de resolver este problema.
AFAIK,
focus
yblur
todos son compatibles con ... todo. (ver http://www.quirksmode.org/dom/events/index.html )fuente
Mientras buscaba este problema, encontré una recomendación de que se debería usar la API de Visibilidad de página . La mayoría de los navegadores modernos son compatibles con esta API de acuerdo con Can I Use: http://caniuse.com/#feat=pagevisibility .
Aquí hay un ejemplo de trabajo (derivado de este fragmento ):
Actualización: el ejemplo anterior solía tener propiedades prefijadas para los navegadores Gecko y WebKit, pero eliminé esa implementación porque estos navegadores han estado ofreciendo API de Visibilidad de Página sin un prefijo por un tiempo. Mantuve el prefijo específico de Microsoft para seguir siendo compatible con IE10.
fuente
Sorprendente ver a nadie mencionado
document.hasFocus
MDN tiene más información.
fuente
Sí, eso debería funcionar para ti. Me acabas de recordar este enlace que encontré que explota esas técnicas. lecturA INTERESANTE
fuente
Lo haría de esta manera (Referencia http://www.w3.org/TR/page-visibility/ ):
fuente
¡Diversión y fácil de usar!
El siguiente complemento pasará por su prueba estándar para varias versiones de IE, Chrome, Firefox, Safari, etc. y establecerá sus métodos declarados en consecuencia. También trata temas como:
El uso es tan simple como: Desplácese hacia abajo para ' Ejecutar fragmento '
fuente
jQuery(window).blur/focus
, que muchos no querían, por lo que es una de las razones por las que hice este complemento. El complemento está destinado a ayudar a proporcionar lo que jQuery ya no tiene