2012-04-26 16 views

risposta

1

È possibile provare con l'API di visibilità delle pagine, ha la proprietà booleana document.hidden (document.webkitHidden), che rileva anche se la pagina corrente è ridotta a icona o ingrandita. E dipende anche se l'utente si è concentrata scheda del browser corrente o no:

https://developers.google.com/chrome/whitepapers/pagevisibility

https://developer.mozilla.org/en/DOM/Using_the_Page_Visibility_API

+0

Nel mio caso l'API di visibilità della pagina non cambia stato quando minimizzo il browser o premo alt tab. È un comportamento previsto perché se minimizzo il browser è fondamentalmente nello stato nascosto, giusto? – Sachin

13

Credo che l'unico modo affidabile per rilevare questi stati è quello di verificare la visibility API offerto da HTML5 (questo è ancora una funzione sperimentale), che offre alcune proprietà ed eventi

document.hidden // Returns true if the page is in a state considered to be hidden to the user, and false otherwise. 

document.visibilityState // Returns a string denoting the visibility state of the document  

Si può anche reagire ai cambiamenti della visibilità

document.addEventListener("visibilitychange", function() { 
    console.log(document.hidden, document.visibilityState); 
}, false); 

Ricordare che non funziona con browser multiplo e disponibile solo in alcune versioni del browser.

+0

Mentre window.resize non riesce su OSX per notare un'operazione "ridotta ad attracco" (iconify/minimizza) e "ripristinata da dock" (ripristino), questa tecnica che hai mostrato qui sembra funzionare.Buon lavoro! – Volomike

1

Io uso questo codice

window.addEventListener('blur', function(){ 
    console.log('blur'); 
}, false); 

window.addEventListener('focus', function(){ 
    console.log('focus'); 
}, false); 
+0

Questo è eccellente. Grazie mille – jaggedsoft

4

Ecco Piotrek De s' answer on another question:

C'è una libreria ordinata disponibili su GitHub:

https://github.com/serkanyersen/ifvisible.js

Esempio:

012.351.
// If page is visible right now 
if(ifvisible.now()){ 
    // Display pop-up 
    openPopUp(); 
} 

Ho provato la versione 1.0.1 su tutti i browser che ho e posso confermare che funziona con:

  • IE9, IE10
  • FF 26,0
  • Chrome 34.0

e probabilmente tutte le versioni più recenti.

non funziona pienamente con:

  • IE8 - sempre indicare che scheda/finestra è attualmente attivo (.ora() restituisce sempre vero per me)
Problemi correlati