Ho scritto un plugin jQuery che fa questo: http://mths.be/visibility ti dà una molto semplice API che consente di eseguire i callback quando lo stato di visibilità della pagina.
Lo fa utilizzando il the Page Visibility API dove è supportato, e ricadendo al buon vecchio focus
e blur
nei browser più vecchi.
Demo:http://mathiasbynens.be/demo/jquery-visibility
Questo plugin fornisce semplicemente due eventi personalizzati per l'uso: show
e hide
. Quando lo stato di visibilità della pagina cambia, verrà attivato l'evento appropriato.
Si possono usare separatamente:
$(document).on('show', function() {
// the page gained visibility
});
... e ...
$(document).on('hide', function() {
// the page was hidden
});
Poiché la maggior parte del tempo avrete bisogno entrambi gli eventi, la soluzione migliore è quella di utilizzare una mappa eventi. In questo modo, è possibile associare entrambi i gestori di eventi in un colpo solo:
$(document).on({
'show': function() {
console.log('The page gained visibility; the `show` event was triggered.');
},
'hide': function() {
console.log('The page lost visibility; the `hide` event was triggered.');
}
});
Il plugin in grado di rilevare se l'API pagina visibilità è supportato nativamente nel browser oppure no, ed esporre queste informazioni come un valore booleano (true
/false
) in $.support.pageVisibility
:
if ($.support.pageVisibility) {
// Page Visibility is natively supported in this browser
}
fonte
2012-03-09 12:47:26
il modo migliore per farlo è quello di utilizzare l'API Pagina visibilità. Tuttavia, questa API non è disponibile nei browser più vecchi. Ho scritto un plugin jQuery che utilizza la migliore API disponibile per rilevare se la pagina è visibile o meno: http://stackoverflow.com/a/9634295/96656 –