javascript - JQuery - 每个 session 运行一次

标签 javascript jquery

我有一个由“计算”按钮触发的函数

我需要此行在每个 session 中只运行一次( session 可以是 1 天或直到浏览器重新加载)。

$('.popup-with-form').magnificPopup('open');

这将打开一个 Magnific Popup。一旦执行此功能(弹出窗口打开),如果再次按下“计算”按钮,我不想再次打开弹出窗口。

JS/JQuery 代码:

function StateChanged() {
       if (XmlHttp.readyState == 4 || XmlHttp.readyState == "complete") {
           $('.popup-with-form').magnificPopup('open');
          document.getElementById("CalcSum").innerHTML = XmlHttp.responseText;
          document.getElementById("CalcSumPopup").innerHTML = XmlHttp.responseText;
       }
    }

PS 我知道很多这样的问题会弹出,我尝试了不同的做事方式,但由于我是“代码挑战者”并且不知道 JQuery 或 JS,所以我做不到想办法。我知道 JQuery 中有一个.one“东西”,但不明白如何让它工作。

最佳答案

如果您只想在每个浏览器 session 中执行一次此行,您可以使用 sessionStorage。当您在 sessionStorage 上设置变量时,它会保持其值直到浏览器关闭(例如,直到您关闭 Google Chrome)。

所以你可以这样做:

if (!sessionStorage.alreadyClicked) {
    $('.popup-with-form').magnificPopup('open');
    sessionStorage.alreadyClicked = 1;
}

小心使用 sessionStorage,因为它只能存储 string 值。

如果您希望该行在每个页面 session 中只执行一次(这意味着每次页面刷新一次),那么您可以使用任何变量并将其设置为 true 以记住您已经执行了该行:

if (!window.alreadyClicked) {
    $('.popup-with-form').magnificPopup('open');
    alreadyClicked = true;
}

关于javascript - JQuery - 每个 session 运行一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25070877/

相关文章:

javascript - 在 for 循环 XMLHttpRequest 结束时执行回调

javascript - 如何在我的 React 组件的 Jest 测试中使用数组原型(prototype)?

javascript - JQuery 拖放

javascript - 生成 Angular 未知标签

jquery - 可排序的双列表,具有删除和重新排列元素到正确的层次结构的功能

php - 将文本框值存储在数组中

javascript - 序列化 Django 模型

javascript - 自定义 JS 对象无法正确解析

javascript - 使用 Vue.js 和 Minimalect 在 HTML 选择中显示默认值

javascript - 使用 jquery 从表中删除动态添加的行