页面刷新或移动到另一页后保留setTimeout()

本文关键字:保留 setTimeout 一页 刷新 移动 | 更新日期: 2023-09-27 18:24:09

我需要在15分钟后显示我的警报消息,但如果页面刷新或更改页面,它就不起作用。我在同一个网页上做这件事。当我按下一个按钮时,它应该调用showPopUp()方法。我使用的是Visual Studios 2005版本的asp.net。

function showPopUp(){
  setTimeout(function() {alert("Warning");}, 5000);
}
 
function delayer(){
  showPopUp();
}

页面刷新或移动到另一页后保留setTimeout()

  1. 将初始时间存储在本地存储中
  2. 每当加载页面时,将本地存储中的值与当前时间进行比较,然后从您停止的位置再次启动超时

所以像这样(未经测试):

var waitTime = 900000; // 15 minutes
var executionTime;
var initialTime = localStorage.getItem("initialTime");
if (initialTime === null) {
    localStorage.setItem("initialTime", (new Date()).getTime());
    executionTime = waitTime;
}
else {
    executionTime = parseInt(initialTime, 10) + waitTime - (new Date()).getTime();
    if (executionTime < 0) executionTime = 0;
}
setTimeout(function() { 
    alert("Warning"); 
    // reset the timeout to start from waitTime on page reload
    localStorage.removeItem("initialTime");
}, executionTime);

编辑:

如果你不想使用localStorage,你可以把它存储在asp.net会话变量中,比如

Session["InitialTime"] = (DateTime.UtcNow - New DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds;

然后执行与上面javascript代码类似的逻辑,并将结果作为setTimeout函数中的第二个参数输出(但请记住,setTimeout将秒转换为毫秒)。