是否有可靠的方法来确定浏览器选项卡或窗口是否处于非活动状态?

Jim*_*ato 8 javascript browser cross-browser

我有一个javascript计时器,它不断地(每10秒一次)发出XMLHTTP请求.我希望能够在窗口或标签失去焦点时暂停计时器.

我完全了解对象上的事件onFocusonBlur事件window,但它们并不能在所有浏览器中可靠地触发.例如,在Safari中,选项卡不会触发事件.

下面的简单代码提炼了我正在寻找的功能:

<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>
Run Code Online (Sandbox Code Playgroud)

有没有人有一种技术可以确定浏览器窗口或标签何时失去/获得适用于所有流行浏览器的焦点?

det*_*etj 3

上面的代码在Safari v3.0.4(WebKit 530+)中运行良好,该错误似乎已得到解决。我检查过它Google Chrome v3.0.195.27,它有相同的 Safari 错误,尽管它有较新版本的 WebKit。