2012-04-26 25 views
21


Voglio scrivere una pagina web per il quiz online. Il requisito di base che ho è che, se la persona che accetta il quiz cambia scheda o apre una nuova finestra anche senza minimizzare il browser, cioè se la persona prova a vedere la risposta da qualche altra finestra/scheda, il quiz dovrebbe fermarsi. Come posso farlo?
P.S: non dovrebbe essere una funzionalità HTML5 molto nuova. Voglio che sia supportata da tutti i principali browser al momento.Javascript per rilevare se l'utente cambia scheda

+1

Beh certamente cambiare in scheda può essere rilevato utilizzando Javascript per quanto ne know.What volevo sapere è se il cambiamento di orientamento della finestra come aprire un nuovo browser può essere rilevato! – Maxsteel

+0

Non verrà rilevato se si verifica in un'altra finestra del browser. –

risposta

36

è possibile determinare se una scheda o una finestra è attiva collegando un listener di eventi sfocatura/messa a fuoco a finestra.

in jQuery sarebbe

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

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

citato da questo SO rispondere: https://stackoverflow.com/a/1760268/680578

+1

Sparerebbe anche solo per perdere il focus sulla finestra, ma la finestra è ancora visibile. – Matt

+1

Sarà in grado di rilevare se l'utente avvia nuova finestra/browser senza ridurre al minimo la finestra del quiz? – Maxsteel

+0

Se si verifica un nuovo popup, ci sarà una perdita di attenzione per la finestra corrente, non ci sarebbe? – Kristian

14

Se si stanno indirizzando i browser che lo supportano, è possibile utilizzare l'API di visibilità delle pagine disponibile in HTML5. Non rileva direttamente le modifiche alle schede, per dire, ma cambia la visibilità. Che includerebbe (ma non limitato a) le modifiche alle schede.

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

+0

Questa è una comoda API, tuttavia è importante notare che in questo momento (6 marzo 2015) ci sono alcune limitazioni: 'Alt' +' Tab' (ad esempio l'accensione di qualsiasi tipo di app) non si registra su Windows per Firefox/Chrome/IE10. Cambiare scheda all'interno di ciascun browser funziona comunque bene. Su iOS anche se il cambio di app o il blocco del dispositivo ** non fa scattare un cambiamento di visibilità. – scunliffe

4

funzione migliore mani nativi verso il basso, senza jQuery.

document.hasFocus 

Controllare la penna, controllare ciò che succede quando si va al link e tornare alla scheda codepen.

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

+0

Sembra funzionare per me in Opera, FireFox, Safari e Chrome. Non ho provato in altri. – Umair

Problemi correlati