2012-04-26 22 views
21


Quiero escribir una página web para la prueba en línea.El requisito básico es que, si la persona que toma la prueba cambia de pestaña o abre una nueva ventana, incluso sin minimizar el navegador, es decir, si la persona intenta ver la respuesta desde otra ventana/pestaña, la prueba debe detenerse. ¿Cómo puedo hacer eso?
P.S: no debe ser una función HTML5 muy nueva. Quiero que sea compatible con todos los principales navegadores actualmente.Javascript para detectar si el usuario cambia la pestaña

+1

Bueno sin duda cambia de pestaña se pueden detectar mediante el uso de Javascript Por lo que know.What que quería saber es si se puede detectar el cambio en el foco de la ventana como la apertura de un nuevo navegador! – Maxsteel

+0

No detectará si sucede en otra ventana del navegador. –

Respuesta

36

se puede determinar si una pestaña o ventana está activa uniendo un detector de eventos desenfoque/foco a la ventana.

en jQuery sería

$(window).focus(function() { 
    //do something 
}); 

$(window).blur(function() { 
    //do something 
}); 

cita de este SO responder: https://stackoverflow.com/a/1760268/680578

+1

También se dispararía por solo perder el foco en la ventana, pero la ventana aún está visible. – Matt

+1

¿Podrá detectar si el usuario abre una nueva ventana/navegador sin minimizar la ventana del cuestionario? – Maxsteel

+0

Si se produce una nueva ventana emergente, habrá una pérdida de foco en la ventana actual, ¿no es así? – Kristian

14

Si se dirige a los navegadores que lo admiten, puede usar la API Visibilidad de página disponible en HTML5. No detecta directamente los cambios de pestaña, por decir, pero la visibilidad cambia. Que incluiría (pero no se limita a) cambios de pestaña.

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

+0

Esta es una práctica API, sin embargo, cabe señalar que en este momento (6 de marzo de 2015) hay algunas limitaciones: 'Alt' +' Tab' (por ejemplo, la aplicación de encendido de cualquier tipo) no se registra en Windows para Firefox/Chrome/IE10. Cambiar pestañas dentro de cada navegador funciona bien sin embargo. En iOS, aunque el cambio de aplicación o bloqueo de dispositivo ** activa ** un cambio de visibilidad. – scunliffe

4

mejores manos función nativa abajo, sin jQuery.

document.hasFocus 

Revisa el bolígrafo, comprueba lo que sucede cuando vas al enlace y vuelves a la pestaña del códec.

https://codepen.io/damianocel/pen/Yxxzdj

+0

Parece que funciona para mí en Opera, Firefox, Safari y Chrome. No he probado en otros. – Umair

Cuestiones relacionadas