Tengo un temporizador de JavaScript que realiza solicitudes XMLHTTP de forma constante (una vez cada 10 segundos). Me encantaría poder pausar el temporizador cuando la ventana o pestaña pierda el foco.¿Existe alguna manera confiable de determinar si una pestaña o ventana del navegador está inactiva o no está enfocada?
Soy plenamente consciente de los eventos onFocus
y onBlur
en el objeto window
, pero no se activan de forma fiable en todos los navegadores. Por ejemplo, in Safari, tabs don't trigger the events.
simple código de abajo destila la funcionalidad Busco:
<html>
<head>
<title>Testing</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js"></script>
</head>
<body>
<div id="console"></div>
<script type="text/javascript">
window.onfocus = function(event) {
$('console').insert('Window gained focus<br />');
}
window.onblur = function(event) {
$('console').insert('Window lost focus<br />');
}
</script>
</body>
</html>
¿Alguien por ahí tiene una técnica para determinar cuando una ventana o pestaña del navegador pierde/ganancias enfoque que funciona en todos los navegadores populares?
En mi experiencia, esto no se puede solucionar con flash. http://stackoverflow.com/questions/1099063/detecting-embedded-object-focus-in-safari – jedierikb
posible duplicado de [¿Hay alguna manera de detectar si una ventana del navegador no está activa actualmente?] (http: // stackoverflow .com/questions/1060008/is-there-a-way-to-detect-if-a-browser-window-is-not-currently-active) – rvighne