2009-05-06 13 views
7

La mia pagina dovrebbe emettere suoni di notifica solo quando la finestra è in background. Posso tenere traccia degli eventi window.onfocus e window.onblur da notare quando cambia lo stato di messa a fuoco. Tuttavia, non so se la finestra verrà caricata focalizzata o meno, poiché potrebbe caricare in una scheda di sfondo, ad esempio.Come posso rilevare se una finestra del browser è focalizzata o meno?

Come faccio a decidere se riprodurre suoni o meno prima di ottenere un evento onfocus/onblur?

risposta

2

Non si può semplicemente presupporre che sia caricato in modo sfocato e quindi modificare lo stato su attivo non appena si riceve qualsiasi tipo di evento (keydown/mousemove)?

+0

Questa è una buona idea. Non è una soluzione perfetta, ma potrebbe essere la cosa migliore che funzioni. – Peeja

+2

'mousemove' viene attivato anche se si sposta il mouse su una finestra sfocata, utilizzare invece' mousedown'. Provalo qui: http://www.quirksmode.org/dom/events/tests/mousemove.html –

0

L'evento onfocus deve essere attivato quando la pagina viene inizialmente aperta (in primo piano). Almeno è in FF3/IE8.

In questo modo è possibile attivare inizialmente i suoni, disattivarli quando viene attivata la funzione Onfocus e riattivarli quando viene attivato l'onblur.

+0

Anche quando qualcuno fa una scheda open-to-new con la preferenza switch-to-new-tab disattivata? (Non lo dico, lo chiedo perché voglio sapere :) :) – chaos

+0

Per me, quando ho aperto una nuova scheda (in background), onfocus non è stato attivato. Una volta passato alla scheda, si è attivato. Quindi, se si inizia con suoni attivi, dovrebbe funzionare, giusto? Se la scheda è aperta in primo piano, i suoni saranno attivi, ma l'evento onfocus li spegnerà immediatamente. Se la scheda viene aperta in background, il suono rimane attivo finché non si passa a quella scheda. –

+0

Sembra funzionare allo stesso modo in IE8. –

Problemi correlati