页面刷新或移动到另一页后保留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();
}
- 将初始时间存储在本地存储中
- 每当加载页面时,将本地存储中的值与当前时间进行比较,然后从您停止的位置再次启动超时
所以像这样(未经测试):
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将秒转换为毫秒)。