我有这样的要求,即在页面上显示一个会话计时器,让用户知道他们将被注销,比如 30 分钟,然后这个计时器每秒更新一次。我已经用javascript编写了函数,它在我调用这个函数的每个页面的onLoad()函数上执行此操作,它工作正常。
现在的问题是只剩下 5 分钟,我需要显示“您将在 5 分钟内注销”的警报,所以我添加了一个条件 if(Seconds ==300),如下面的代码所示。
function UpdateTimer() {
var Seconds = TotalSeconds;
var Minutes = Math.floor(Seconds / 60);
if(Seconds ==300)
alert( "you will be logged out in 5 mins");
Seconds -= Minutes * (60);
var TimeStr = LeadingZero(Minutes) + ":" + LeadingZero(Seconds)
document.getElementById("digital").innerHTML = TimeStr;
}
现在的问题是,虽然在会话超时 5 分钟之前会弹出一个警报,但是在用户单击此警报之前无法更新计时器。因此,如果没有用户操作发生,用户会话仍然超时,但警报显示还剩 5 分钟。最糟糕的是,单击警报时,尽管会话已经超时,但计时器再次从 5 分钟开始倒计时。
也采取当用户右键单击并在新窗口中打开页面时的情况,然后会话不会超时,因为用户正在打开的窗口中处理新页面,但我的原始页面不知道这一点,因此它继续倒计时并显示5分钟前提醒。
请让我知道我该如何处理这种情况?