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

时间:2013-07-19 17:56:18

标签: c# javascript asp.net ajax

我需要在15分钟后显示我的提醒消息,但如果页面刷新或我更改页面则无效。我在同一个网页上这样做。当我按下按钮时,它应该调用showPopUp()方法。我使用的是Visual.net 2005版本的asp.net。

。 。

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

  function delayer(){
  showPopUp();
  }

。 。

1 个答案:

答案 0 :(得分:2)

  1. 将初始时间存储在本地存储中
  2. 每当页面加载时,将本地存储中的值与当前时间进行比较,然后从上次停止的位置再次开始超时。
  3. 这样的事情(未经测试):

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