2009-06-24 15 views
20

Sto cercando un evento che si attiva ogni volta che l'utente passa dalla pagina a un'altra scheda e un altro evento che si attiva quando l'utente torna nuovamente alla scheda.Evento per quando l'utente cambia le schede del browser

window.onblur e window.onfocus don't seem to work correctly in tutti i browser

C'è un proxy potevo guardare per sintetizzare questo evento?

+0

Sono abbastanza sicuro che questo non è possibile, almeno in tutti i browser. –

+0

In realtà, compatibilità cross-browser [non sembra così male] (http://www.quirksmode.org/dom/events/blurfocus.html). Ottieni alcuni eventi raddoppiati con Firefox e Safari/Windows, ma dovrebbe essere abbastanza facile da risolvere. 'window.onfocus/onblur' sono disponibili da prima del Browser Wars, e il loro comportamento non è cambiato molto. Apparentemente ci sono alcune _bugs_ nelle implementazioni, ma nessuna _semantics_ differente. – lanzz

risposta

30

Si potrebbe provare a utilizzare un framework, come MooTools o jQuery che fornisce supporto per browser. Dovrebbero essere in grado di rilevare con maggiore affidabilità gli eventi blur e focus per la finestra del browser.

io personalmente ho usato jQuery con molto successo:

$(window).blur(function(e) { 
    // Do Blur Actions Here 
}); 
$(window).focus(function(e) { 
    // Do Focus Actions Here 
}); 
+0

Cool, potrei dare un'occhiata a come sono implementati in jQuery – EoghanM

+0

@Daniel Hey, in realtà stavo cercando un tipo simile di funzionalità. $ (finestra) .focus (function (e) {// Do Focus Actions Here}); Il contenuto all'interno di focus verrà eseguito ogni volta che ci sono altre funzionalità ajax nella pagina, ma una piccola modifica, 1. È possibile eseguire il codice all'interno di questa ONLY ONCE, quando l'utente naviga avanti e indietro tra la stessa pagina. –

+1

_5 anni dopo: _ Grazie Amico! – MCTaylor17

6

Si può anche cercare di utilizzare VisibilityAPI.

document.addEventListener("visibilitychange", function() { 
    if (document.hidden){ 
     console.log("Browser tab is hidden") 
    } else { 
     console.log("Browser tab is visible") 
    } 
}); 

See also here on Stackoverflow (possible duplicate)

+1

Un collegamento a una potenziale soluzione è sempre il benvenuto, ma per favore [aggiungi contesto intorno al link] (// meta.stackoverflow.com/a/8259) in modo che i tuoi utenti possano avere un'idea di cosa è e perché è lì. ** Cita sempre la parte più rilevante di un link importante, nel caso in cui il sito target sia irraggiungibile o sia permanentemente offline. ** Considera che essere _barely più di un link a un sito esterno_ è una possibile ragione per [Perché e come vengono eliminate alcune risposte?] (// stackoverflow.com/help/deleted-answers). – Makyen

Problemi correlati