【问题标题】:Javascript sessionStorage Across tabs?跨标签的Javascript sessionStorage?
【发布时间】:2017-08-28 17:53:53
【问题描述】:

我使用sessionStorage 来确保每个会话只执行一次操作。但是,如果用户打开一个新窗口 - sessionStorage 不会转移到新窗口,并且会再次执行该操作。请参阅下面的代码:

if sessionStorage.alreadyTracked != "1"
  sessionStorage.alreadyTracked = "1"
  ...

有没有一种适用于所有标签的简单方法?也许我需要使用 cookie?

【问题讨论】:

    标签: javascript session-variables session-cookies


    【解决方案1】:

    您可能想要切换到localStorage,因为sessionStorage 绑定到各个选项卡,而localStorage 没有。

    【讨论】:

    • 是的,但是当浏览器关闭时本地存储不会清理,在某些情况下这是不受欢迎的行为(例如使用“身份验证”值)
    【解决方案2】:

    就 html5 存储而言,在您的情况下,我会选择 localStorage。

    请参阅下面的差异。

    会话存储:

    • 值仅在它们所在的窗口或选项卡中持续存在
      存储。
    • 值仅在窗口或选项卡中可见 创建它们。

    本地存储:

    • 值保持窗口和浏览器的生命周期。
    • 值在同一来源运行的每个窗口或选项卡之间共享。

    Read more here

    【讨论】:

    • 您知道吗,当您复制一个选项卡(在 chrome 中)时,会话存储也会被复制?
    【解决方案3】:

    如果您对仅定位 FF/Chrome 没问题,您可能还想看看 Broadcast Channel API

    广播频道 API 允许在具有相同来源(通常来自同一站点的页面)的浏览上下文(即窗口、选项卡、框架或 iframe)之间进行简单的通信。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-06
      • 2015-06-20
      • 2021-02-24
      • 2014-02-23
      • 2017-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多