4

特定于谷歌浏览器:我试图检测页面何时失去焦点,但不是当它失去焦点到 javascript 控制台/其他开发工具时(即页面仍然是主要焦点)。

有任何想法吗?

我试过使用window.onblurvisibilitychange事件。

简短的用例:我正在开发一款游戏,由于某种原因,当它运行我的编辑器(OSX 上的 sublime text 2)时,速度慢了下来。如果我改变窗口焦点,那很好。所以当我去我的编辑器时我试图暂停游戏,但当我在 javascript 控制台中时让它运行

[编辑]

由于我的问题显然不清楚,因此试图澄清:我希望能够区分:

  • 切换标签,切换应用
  • 去 javascript 控制台
4

2 回答 2

0

因为您无法真正检测到焦点是否在开发工具上,所以您可以做的最好的事情是检测您是否打开了开发工具:

var focused = true;

$(window).blur(function () {
    setTimeout(function () {
        if(!isInspectOpen()) {
            alert("Focus lost.");
            focused = false;
        }
    }, 500);
});
$(window).focus(function () {
    if(!focused) {
        alert("Focus gained.");
        focused = true;
    }
});

function isInspectOpen() {
    console.profile();
    console.profileEnd();
    if(console.clear) console.clear();
    return console.profiles.length > 0;
}

               http://jsfiddle.net/DerekL/NtPPR/

于 2013-06-05T01:13:07.550 回答
-1

window.onfocus?我真的不明白你的意思,但看看这个参考。搜索“事件”:

DOM 文档参考

DOM 参考

希望对你有帮助!

于 2013-06-05T00:58:57.040 回答