Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Js检查选项卡是否在后台打开_Javascript_Jquery - Fatal编程技术网

Javascript Js检查选项卡是否在后台打开

Javascript Js检查选项卡是否在后台打开,javascript,jquery,Javascript,Jquery,我需要显示弹出窗口,如果这个脚本标签是在后台一分钟(延迟)。此代码可以工作,但存在一个问题。若我在“背景”选项卡中打开页面,这将不起作用。我在控制台中看到“1”写了两次,“2”在我第一次进入后台选项卡后写了一次。我想我需要检查一下document.hasFocus()函数,这样我的想法就行了。怎么做 var showPopupTimeout; $(window).blur(function () { if (!checkCompleted) { console.log(

我需要显示弹出窗口,如果这个脚本标签是在后台一分钟(延迟)。此代码可以工作,但存在一个问题。若我在“背景”选项卡中打开页面,这将不起作用。我在控制台中看到“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”。如果页面“隐藏”,则记录时间


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

弹出调用在函数中-checkClientCalled()
setTimeout
在标签位于后台时变得不准确。那么我该如何解决我的问题呢?以某种方式重写代码。你说的弹出窗口是什么意思?页面内的新窗口或虚拟弹出窗口?页面内的虚拟弹出横幅。