检查网站是否在前台运行

4

我希望用JavaScript检查我的网站是否在前台。但在阅读完整段内容之前,请不要回答,因为你可能会直接告诉我应该做这个

$(window)
    .focus(function() {
        console.log("focus");
    })
    .blur(function() {
        console.log("blur");
    });​

但问题是我在我的页面上有一个来自第三方的 iframe。如果用户点击 iframe,窗口模糊事件会被触发,但是实际上用户仍然在我的页面上。我尝试修复这个问题,通过检查 在 blur 时 document.activeElement 是否为 iframe
$(window)
    .focus(function() {
        console.log("focus");
    })
    .blur(function() {
        console.log("blur");
        if (document.activeElement.tagName.toLowerCase() == "iframe") {
            console.log("still focus");
        }
    });​

问题在于当用户先点击 iframe,然后再点击其他应用程序时,我无法检查页面是否不再处于前景。

那么,当网站中有 iframe 时,如何检查它是否在前景中?


2
也许你可以使用这个 - Fabrício Matté
谢谢,这可以解决现代浏览器的问题,但我还需要支持IE8。 - noob
1个回答

3

这将解决现代浏览器的问题,但我还需要支持IE8。 - noob
你听说过优雅降级吗?https://dev59.com/RGkw5IYBdhLWcg3wzdzZ#9634295 - gearsdigital
不过那个人正在做的事情真的很棒。源代码看起来应该能够工作,但我还没有测试过。 - noob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接