【问题标题】:Reset variable on every new session using localstorage使用本地存储在每个新会话上重置变量
【发布时间】:2019-05-15 01:54:48
【问题描述】:

我试图在跨多个页面的用户会话开始时只运行一次。

我试图使用 sessionStorage 来测试是否存在最初默认为 false 的变量,但由于脚本中的 JavaScript 重定向,它不会在某些浏览器中持续存在:

window.location.href

有没有办法用更可靠的本地存储来模拟这一点?

即在每个新用户会话开始时只做一次。会话可能有多个页面,因此单个 javascript 变量将不起作用。

更新:按照cmets的要求,基本逻辑是:

  1. 新会话已打开。
  2. 重定向一次到最后查看的页面。
  3. 设置重定向为真。以防止这种情况再次发生。

我意识到除了本地存储之外还有其他方法可以做到这一点。如果可能的话,使用它会很好。

【问题讨论】:

  • 你如何定义会话?在没有打开同一站点的其他页面时打开一个页面?长时间休息后打开页面?登录和注销之间的时间?还有什么?
  • 您可能想要描述您想要存储的变量类型。或者改进您的业务逻辑,以便社区可以更好地帮助您。
  • 通过分配给 location.href 的 javascript 重定向不应丢弃会话。您在哪些浏览器中遇到过这种情况?
  • @Bergi firefox 在我的 windows 7 firefox 61 上虽然它在 windows 10 上的 chrome 和 firefox 上运行良好
  • @exebook 更新

标签: javascript local-storage session-storage


【解决方案1】:

您可以检查该项目是否已经存在或者它是否为空: localStorage.getItem("itemname");

如果它不存在(== null),它是第一个“运行”,因此您可以设置它以防止进一步循环执行。采用: localStorage.setItem("itemname", "notNull");

【讨论】:

  • 对,但是明天或一周后的下一次会议呢?在第一次运行时它不会为空
  • 在下一次会话中,它将与上次会话中的值相同
  • ...但如果客户端窗口关闭,您可以使用 o onclose 事件将其设置为 null
猜你喜欢
  • 2015-09-06
  • 1970-01-01
  • 2014-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
  • 2013-04-21
  • 1970-01-01
相关资源
最近更新 更多