javascript - JS 检查选项卡是否在后台打开

标签 javascript jquery

如果带有此脚本的选项卡在后台运行一分钟(延迟),我需要显示弹出窗口。这段代码可以工作,但是有一个问题。如果我在后台选项卡中打开页面,则这不起作用。在我第一次进入后台选项卡后,我在控制台中看到“1”写了两次,“2”写了一次。我想我需要对函数 document.hasFocus() 进行一些检查,这样我的想法才能很好地发挥作用。怎么做?

var showPopupTimeout;

$(window).blur(function () {
    if (!checkCompleted) {
        console.log("2");
        showPopupTimeout = setTimeout(checkClientCalled, delay);
    }
});

$(window).focus(function () {
    if (!checkCompleted) {
        console.log("1");
        clearTimeout(showPopupTimeout);
    }
});

最佳答案

使用页面可见性 API。

收听“onvisibilitychange”。如果页面“隐藏”,则记录时间。

如果页面“可见”,则检查页面隐藏的时间。从现在开始减去它,如果差异超过 60000 毫秒,则显示对话框。

关于javascript - JS 检查选项卡是否在后台打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34026916/

相关文章:

javascript - 为什么 `(state == 1 && 3)` 有意义?

javascript - 如何将 Socket.io 与 MEAN 堆栈一起使用?

javascript - 从 ASP.net 代码隐藏有条件地关闭 jquery 模式窗口

JavaScript 正则表达式数字与包含单个零的字符串不匹配

php - 在 html 页面中显示存储的电子邮件正文内容

Javascript条件点击事件运行多次

javascript - 如何在 HTML 中转义 JavaScript 代码

javascript - 在选项元素中引用多个值

javascript - 如何正确增加好恶

javascript - 属性节点和element.attributes