2009-05-06 32 views
7

Mi página debe hacer que las notificaciones suenen solo cuando la ventana está en segundo plano. Puedo rastrear los eventos window.onfocus y window.onblur para notar cuándo cambia el estado del foco. Sin embargo, no sé si la ventana se cargará enfocada o no, ya que podría cargarse en una pestaña de fondo, por ejemplo.¿Cómo puedo detectar si una ventana del navegador está enfocada o no?

¿Cómo decido si reproducir sonidos o no antes de obtener un evento onfocus/onblur?

Respuesta

2

¿No podría simplemente asumir que está cargado borroso, y luego cambiar el estado a enfocado tan pronto como reciba cualquier tipo de evento (keydown/mousemove)?

+0

Esa es una buena idea. No es una solución perfecta, pero podría ser lo mejor que funcione. – Peeja

+2

'mousemove' se activa incluso si mueve el mouse en una ventana borrosa, use' mousedown' en su lugar. Pruébelo aquí: http://www.quirksmode.org/dom/events/tests/mousemove.html –

0

El evento de enfoque debe activarse cuando la página se abra inicialmente (en primer plano). Al menos está en FF3/IE8.

Por lo tanto, podría tener sonidos inicialmente, apagarlos cuando se desencadene el enfoque y volverlos a encender cuando se active onblur.

+0

¿Incluso cuando alguien hace una pestaña abierta a nueva con la preferencia de cambiar a nueva pestaña desactivada? (No digo que no, preguntando porque quiero saber :) :) – chaos

+0

Para mí, cuando abrí en una nueva pestaña (en el fondo), no se activó el foco. Una vez que cambié a la pestaña, se activó. Entonces, si comienzas con sonidos, eso debería funcionar, ¿no? Si la pestaña se abre en primer plano, los sonidos estarán activados, pero el evento onfocus los desactivará inmediatamente. Si la pestaña se abre en el fondo, el sonido permanecerá encendido hasta que cambie a esa pestaña. –

+0

Parece que funciona de la misma manera en IE8. –

Cuestiones relacionadas