运行 一个 javascript 定时器在 aspx 页面上只出现一次

Run a javascript timer only once on aspx page

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

我需要在他们访问网站的整个过程中显示一次。这是我的代码。

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

可能最简单的方法是使用会话 cookie 来确定用户是否已经看到消息:

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

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

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);
}

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