更改页面后,setTimeout是否继续?

时间:2017-06-02 07:41:11

标签: javascript jquery html

我有2页,主页和编辑页面。

我使用的功能会在一段时间不活动后自动注销用户。

该功能仅用于主页,而不是编辑页面。

以下是功能代码。

    // Set timeout variables.
    var timoutWarning = 10000; 
    var timoutNow = 30000; 


    var warningTimer;
    var timeoutTimer;

    // Start timers.
    function StartTimers() {
        console.log("Start TImer");
        warningTimer = setTimeout("IdleWarning()", timoutWarning);
        timeoutTimer = setTimeout("SignOut()", timoutNow);
        $( "#timeout" ).dialog({
        autoOpen: false
    });
    }

    // Reset timers.
    function ResetTimers() {
        clearTimeout(warningTimer);
        clearTimeout(timeoutTimer);
        StartTimers();
        $( "#timeout" ).dialog("close")
        console.log("Reset TImer");
 }


    // Show idle timeout warning dialog.
    function IdleWarning() {

        $("#timeout").dialog({
            autoOpen: true,
            modal: true

        });

    }

我使用

在主页中调出了该功能
   <body onload="StartTimers();" onmousemove="ResetTimers();">

<div id="timeout">
    <h1>
        Session About To Timeout</h1>
    <p>
        You will be automatically logged out in a while<br />
    To remain logged in move your mouse
</div>

计时器在主页中完美运行,但在我切换到编辑页面(基本上没有空白页面的功能)后,无论是否移动鼠标,我仍然会自动注销。

这是否意味着即使我切换页面后该功能仍在运行?如果是这样,我在切换页面后有什么办法可以停止计时器吗?

ps我确实尝试添加函数并在编辑页面中调用它,但是,即使我继续移动鼠标,我仍然会被注销,这就是为什么我认为在切换页面后函数仍在运行的原因

已解决:重新启动浏览器后,它的工作正常。我相信我可能已经搞砸了。我向在这个问题上投入时间的人道歉。基于下面的评论/答案我的问题的答案是否定的。 setTimeout在更改页面后不会继续。

2 个答案:

答案 0 :(得分:2)

如果浏览器已完全加载第二页,并且该代码不在其上,则该代码将无法运行。这假设你正在加载第二页传统上&#39;而不是通过AJAX拉入它。

我会做以下事情:

  • 在setTimeout函数中放置alert("Code running")。这是告诉您代码是否正在运行的一种非常简单的方法。

  • 检查编辑页面的源代码。确保您没有将代码复制到该页面。

答案 1 :(得分:0)

不,关闭/刷新页面时会删除超时(就像JavaScript中的任何内容一样)。所以你的bug必须是别的东西。