在aspx页面上只运行一次javascript计时器

时间:2015-05-14 18:38:39

标签: javascript html asp.net timer

我的Site.Master页面中有一个功能,在30秒后显示一个弹出窗口。但是每次我加载一个子页面时,计时器会在30秒后重新弹出并再次弹出。

我需要它一次显示,他们访问网站的整个时间。这是我的代码。

setTimeout(function() {
    // run event......
}, 30000);

2 个答案:

答案 0 :(得分:2)

可能最容易使用会话cookie来确定用户是否已经看过该消息:

if(!document.cookie.match(/sawMessage/)) {
   setTimeout(function() {
     // run event......
     document.cookie="sawMessage=true";
   }, 30000);
}

答案 1 :(得分:2)

您可以尝试设置标志,例如在本地存储中:

if (localStorage.getItem("popup") != "1") {

   localStorage.setItem("popup", "1");

   setTimeout(function() {
    // run event......
   }, 30000);
}

编辑:

如果您想确保弹出窗口至少显示一次,请改用此版本:

if (localStorage.getItem("popup") != "1") {
   setTimeout(function() {
      localStorage.setItem("popup", "1");
      // run event......
   }, 30000);
}

这样只有弹出窗口实际显示时才会设置标志。