Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.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中清除超时前的计时器_Javascript_Timeout - Fatal编程技术网

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

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

我在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);
});

我使用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);
});