当网页未最小化或新选项卡打开时,在javascript中清除超时前的计时器
我在JavaScript中有一个递归类型函数onload,运行方式如下: 我已经给出了弹出窗口的超时时间为5秒,工作正常。 但我想在用户移动到新选项卡时清除计时器并关闭弹出窗口,因此我在JavaScript中使用了“document.hidden”属性 但当我运行脚本并移动到新选项卡或最小化浏览器中的窗口时,计时器仍然没有清除,超时持续5秒 有什么我遗漏的吗。请指教当网页未最小化或新选项卡打开时,在javascript中清除超时前的计时器,javascript,timeout,Javascript,Timeout,我在JavaScript中有一个递归类型函数onload,运行方式如下: 我已经给出了弹出窗口的超时时间为5秒,工作正常。 但我想在用户移动到新选项卡时清除计时器并关闭弹出窗口,因此我在JavaScript中使用了“document.hidden”属性 但当我运行脚本并移动到新选项卡或最小化浏览器中的窗口时,计时器仍然没有清除,超时持续5秒 有什么我遗漏的吗。请指教 function callMe() { var delay ; $("#dialog").dialog({
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);
});
我使用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);
});