2011-08-08 18 views
5

He mirado en esto:¿Determina si la pestaña del navegador está activa? - IE?

How to tell if browser/tab is active

y:

Is there a reliable way to determine if a browser tab or window is inactive or not in focus?

El primer enlace proporciona una solución para los navegadores modernos, pero no funciona en Internet Explorer 7/8. Ambas preguntas son bastante antiguas. ¿Hay una solución al problema de determinar si un visitante está viendo su pestaña abierta o no?

Casi todo lo que he probado funciona bien en Chrome. Pero IE7 simplemente falla.

Solo quiero establecer una variable global que indique si se está visualizando la página.

decir

var isActive = true; 

$(window).focus(function() { 
    isActive = true; 
}); 

$(window).blur(function() { 
    isActive = false; 
}); 

// test 
setInterval(function() { 
    console.log(window.isActive ? 'active' : 'inactive'); 
}, 1000); 

Respuesta

7

Después de mucho googlear ... luego algo más ... luego un poco más ... 4 horas más o menos después Finalmente encontré este enlace escondido en las profundidades de internet. Los comentarios sugieren que existe un pequeño error, pero está bien para lo que lo necesito.

http://www.thefutureoftheweb.com/blog/detect-browser-window-focus

var isActive = true; 
function onBlur() { 
    isActive = false; 
}; 
function onFocus(){ 
    isActive = true; 
}; 

if (/*@[email protected]*/false) { // check for Internet Explorer 
    document.onfocusin = onFocus; 
    document.onfocusout = onBlur; 
} else { 
    window.onfocus = onFocus; 
    window.onblur = onBlur; 
} 
1

ligeramente diferente, pero this was marked as the answer sugiriendo que funcionó y es un retraso que se necesita. No es muy elegante, pero si funciona.

+0

Tal vez mi pregunta en claro. No estoy tratando de abrir otra ventana. Solo quiero detener los eventos cuando el navegador no está viendo la pestaña. A continuación, reinícielos cuando vuelvan a la pestaña – JasonS

Cuestiones relacionadas