我有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在更改页面后不会继续。
答案 0 :(得分:2)
如果浏览器已完全加载第二页,并且该代码不在其上,则该代码将无法运行。这假设你正在加载第二页传统上&#39;而不是通过AJAX拉入它。
我会做以下事情:
在setTimeout函数中放置alert("Code running")
。这是告诉您代码是否正在运行的一种非常简单的方法。
检查编辑页面的源代码。确保您没有将代码复制到该页面。
答案 1 :(得分:0)
不,关闭/刷新页面时会删除超时(就像JavaScript中的任何内容一样)。所以你的bug必须是别的东西。