Ho un timer javascript che sta effettuando richieste XMLHTTP su base costante (una volta ogni 10 secondi). Mi piacerebbe essere in grado di mettere in pausa il timer quando la finestra o la scheda perde il focus.Esiste un modo affidabile per determinare se una scheda o una finestra del browser è inattiva o non a fuoco?
Sono pienamente consapevole delle onFocus
e onBlur
eventi sull'oggetto window
, ma non vengono attivati in modo affidabile in tutti i browser. Ad esempio, in Safari, tabs don't trigger the events.
semplice codice sotto distilla la funzionalità che sto cercando:
<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>
Qualcuno là fuori ha una tecnica per determinare quando una finestra o scheda del browser perde/Proventi attenzione che funziona su tutti i browser popolari?
nella mia esperienza, questo non è risolvibile tramite flash. http://stackoverflow.com/questions/1099063/detecting-embedded-object-focus-in-safari – jedierikb
possibile duplicato di [C'è un modo per rilevare se una finestra del browser non è attualmente attiva?] (http: // StackOverflow .com/questions/1060008/is-there-a-way-to-detect-if-a-browser-window-is-not-currently-active) – rvighne