gpt4 book ai didi

javascript - 当网页未最小化或打开新选项卡时,在 JavaScript 超时之前清除计时器

转载 作者:行者123 更新时间:2023-11-28 06:23:58 26 4
gpt4 key购买 nike

我在 JavaScript 中有一个递归类型函数 onload,其运行如下:我已将弹出窗口的超时设置为 5 秒,效果很好。但我想在用户移动到新选项卡时清除计时器并关闭弹出窗口,因此我在 JavaScript 中使用了“document.hidden”属性但是,当我运行脚本并移动到新选项卡或最小化浏览器中的窗口时,计时器仍然没有清除,并且超时持续 5 秒我有什么遗漏的吗?请指教

function callMe()
{
var delay ;
$("#dialog").dialog({
modal: true,
title: "Confirmation Window1",
resizable: false,
width: 300,
height: 150,
open: function (event, ui) {
delay = setTimeout(function () {$("#dialog").dialog("close"); setTimeout(callMe,1000); }, 5000);
if(document.hidden)
{
clearTimeout (delay);
$(this).dialog("close");
setTimeout(callMe,1000)
}
},
buttons: {
Ok: function () {
$(this).dialog("close"); //closing on Ok
clearTimeout (delay);
setTimeout(callMe,1000)
},
Cancel: function () {
$(this).dialog("close"); //closing on Cancel
clearTimeout (delay);
setTimeout(callMe,1000)
}
}
});

最佳答案

我能够通过使用 window.blur 和 window.focus 解决该问题。代码如下:

 var delay ;
function callMe()
{


$("#dialog").dialog({
modal: true,
title: "Confirmation Window1",
resizable: false,
width: 300,
height: 150,
open: function (event, ui) {
delay = setTimeout(function () {$("#dialog").dialog("close"); setTimeout(callMe,1000); }, 2000);

},
buttons: {
Ok: function () {
$(this).dialog("close"); //closing on Ok
clearTimeout (delay);
setTimeout(callMe,1000);
},
Cancel: function () {
$(this).dialog("close"); //closing on Cancel
clearTimeout (delay);
setTimeout(callMe,1000);
}
}
});

}



$(window).blur(function(e) {
clearTimeout (delay);
$("#dialog").dialog("close");
});


$(window).focus(function(e) {
setTimeout(callMe,1000);
});

关于javascript - 当网页未最小化或打开新选项卡时,在 JavaScript 超时之前清除计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35284619/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com