Javascript sessionStorage跨标签?

时间:2017-04-03 18:29:41

标签: javascript session-variables session-cookies

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

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

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

3 个答案:

答案 0 :(得分:3)

就html5存储而言,我会选择localStorage。

见下文的差异。

会话存储:

  • 值仅在其所在的窗口或制表符中持续存在 存储。
  • 值仅在窗口或选项卡中可见 创造了它们。

本地存储:

  • 值会持续存在窗口和浏览器生命周期。
  • 在同一来源运行的每个窗口或标签中共享值。

Read more here

答案 1 :(得分:1)

您可能希望切换为localStorage,因为sessionStorage绑定到各个标签,而localStorage则没有。{/ p>

答案 2 :(得分:0)

如果您只定位FF / Chrome,那么您可能还需要查看Broadcast Channel API

  

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