javascript - sessionStorage - 仅在初始页面加载时执行行为

标签 javascript jquery session

我不明白 sessionStorage 是如何工作的。我希望仅在初始页面加载时发生一个事件。

我(尝试)通过检查 session 是否是新的来做到这一点。想法如下:

$(function() {
  sessionStorage.setItem('isNewSession', 'true');
  if (sessionStorage.getItem("isNewSession")) {
    // do stuff on the first page load
  } else {
    // don't do it after
  }
});

因此,当页面首次加载时,sessionStorage 看起来像是设置为 true。之后,在用户访问页面的期间,我只想发生一次的事情总是会发生,因为我可以看到 sessionStorage 始终为 true

如果我将其设置为 false 如果 sessionStorage 返回 true 那么显然我想要发生的事情不会发生。

我调查了session cookie但这种情况在用户访问过程中仍然存在,而不仅仅是第一次加载。

我该如何处理这个问题?如何让事件仅在初始页面加载时触发,而在其余用户访问期间触发?

上下文:“事件”是导航栏中的动画。

最佳答案

首先,sessionStorage 不适合此类任务,因为一旦用户关闭选项卡,它就会丢失。为此,您应该使用 localStorage

From mdn web docs

The sessionStorage property allows you to access a session Storage object for the current origin. sessionStorage is similar to Window.localStorage; the only difference is while data stored in localStorage has no expiration set, data stored in sessionStorage gets cleared when the page session ends. A page session lasts for as long as the browser is open and survives over page reloads and restores.

其次,您在检查之前设置了isNewSession。虽然您应该仅在知道它未设置的情况下设置它。

所以您更正后的代码应如下所示:

$(function() {
    // Determine if is the first time on this page
    if ( ! localStorage.getItem("beenHereBefore")) {
        localStorage.setItem('beenHereBefore', 'true');
    }
});

Fiddle

关于javascript - sessionStorage - 仅在初始页面加载时执行行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50398412/

相关文章:

javascript:当 div 发生变化时如何排序?

javascript - PHP - 脚本执行时无法检查 session

javascript - Google Analytics 是否捕获 Javascript 重定向?

javascript - 在javascript中加密对象

javascript - 在javascript中定义数组并将数组的名称保留为名称

javascript - 如何在Jquery html元素属性中附加字符串变量

php - 来自 api url 的 "&amp"字符未保存到 mysql 数据库

session - session 或Cookie困惑

c# - 每个浏览器选项卡的不同 ASP.NET session

javascript - 在reactjs中消除项目的问题