2

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

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

1 回答 1

2
  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 的秒数转换为毫秒数)。

于 2013-07-19T18:03:29.140 回答