Gibt es eine zuverlässige Methode, um festzustellen, ob ein Browser-Tab oder -Fenster inaktiv ist oder nicht im Fokus steht?

Ich habe einen JavaScript-Timer, der ständig XMLHTTP-Anfragen stellt (alle 10 Sekunden). Ich würde gerne in der Lage sein, den Timer anzuhalten, wenn das Fenster oder die Registerkarte den Fokus verliert.

Mir ist voll bewusst, dassonFocus undonBlur ereignisse auf derwindow Objekt, aber sie feuern nicht zuverlässig über alle Browser. Zum Beispiel,In Safari lösen Tabs keine Ereignisse aus.

Der folgende einfache Code destilliert die Funktionalität, nach der ich suche:

<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>

Hat jemand eine Technik, mit der festgestellt werden kann, wann ein Browserfenster oder eine Registerkarte den Fokus verliert / gewinnt, und die in allen gängigen Browsern funktioniert?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage