He escrito un plugin de jQuery que hace esto: http://mths.be/visibility le da una API muy simple que le permite ejecutar las devoluciones de llamada cuando cambia el estado de visibilidad de la página.
Lo hace usando el the Page Visibility API donde es compatible, y volviendo al antiguo focus
y blur
en navegadores anteriores.
Demostración:http://mathiasbynens.be/demo/jquery-visibility
Este plugin simplemente proporciona dos eventos personalizados para que usted utilice: show
y hide
. Cuando el estado de visibilidad de la página cambia, se desencadena el evento apropiado.
Se puede utilizar por separado:
$(document).on('show', function() {
// the page gained visibility
});
... y ...
$(document).on('hide', function() {
// the page was hidden
});
Dado que la mayoría de las veces usted necesitará ambos eventos, la mejor opción es utilizar un mapa de eventos. De esta forma, se puede unir los dos controladores de eventos de una sola vez:
$(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.');
}
});
El plugin detectará si la API de visibilidad de páginas es compatible de forma nativa en el navegador o no, y exponer esta información como un valor lógico (true
/false
) en $.support.pageVisibility
:
if ($.support.pageVisibility) {
// Page Visibility is natively supported in this browser
}
la mejor manera de hacer esto es mediante el uso de la API de visibilidad de páginas. Sin embargo, esta API no está disponible en navegadores más antiguos. Escribí un plugin jQuery que usa la mejor API disponible para detectar si la página es visible o no: http://stackoverflow.com/a/9634295/96656 –