2012-04-26 22 views
11

Estoy tratando de encontrar el navegador minimizar y maximizar los estados, ya que quiero pegar a la solicitud de AJAX en consecuencia el estado del navegador.Cómo detectar el navegador minimizar y maximizar el estado en javascript

¿Alguien sabe cómo puedo detectar el estado del navegador usando JavaScript.

+0

¿Qué pasa si se trata de ¿en algún lugar entremedio? Rara vez uso ventanas maximizadas. – RobG

Respuesta

1

Puede probar con API Visibilidad de página, tiene la propiedad booleana document.hidden (document.webkitHidden), que también detecta si la página actual está minimizada o maximizada. También depende de si el usuario ha centrado pestaña del navegador actual o no:

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

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

+0

En mi caso, la API Visibilidad de página no cambia de estado cuando minimizo el navegador o pulso la tecla alt. ¿Es esto un comportamiento esperado porque si minimizo el navegador básicamente está en el estado oculto, verdad? – Sachin

13

Creo que la única manera confiable de detectar estos estados es comprobar la visibility API que ofrece HTML5 (esto sigue siendo una característica experimental), que ofrece ciertas propiedades y eventos

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  

también puede reaccionar a los cambios de la visibilidad

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

Tenga en cuenta que esto no funciona en el navegador cruzado y solo está disponible en ciertas versiones del navegador.

+0

Mientras window.resize falla en OSX para notar una operación de "reducción al acoplamiento" (iconify/minimize) y "restored from dock" (restaurar), esta técnica que ha mostrado aquí parece funcionar.¡Buen trabajo! – Volomike

1

utilizo este código

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

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

Esto es excelente. Muchas gracias – jaggedsoft

4

Aquí es Piotrek De 's answer on another question:

Hay una biblioteca ordenada disponible en GitHub:

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

Ejemplo:

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

He probado la versión 1.0.1 en todos los navegadores que tengo y puedo confirmar que funciona con:

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

y probablemente todas las versiones más nuevas.

No funciona plenamente con:

  • IE8 - siempre indica que la pestaña/ventana está activa en ese momento (.now() devuelve siempre es cierto para mí)
Cuestiones relacionadas