【问题标题】:Is there a difference in the session storage behavior between Chrome and Firefox?Chrome 和 Firefox 之间的会话存储行为是否存在差异?
【发布时间】:2016-06-20 22:16:30
【问题描述】:

我发现 chrome 和 firefox 在会话存储方面存在差异。我不知道这是我做错了什么还是这是他们每个人的行为。

情况:我需要会话存储按选项卡而不是窗口工作。在 Firefox 中,我得到了这个结果,但在 chrome 中没有。这是我为模拟这种情况而制作的 Plunker:plunker

if(!($scope.fooBarKey = sessionStorage.getItem('fooBarKey'))) {
  $scope.fooBarKey = Math.floor(Math.random() * 900000) + 100000;
  sessionStorage.setItem('fooBarKey', $scope.fooBarKey);
}

感谢收听


Obs:回答 charlietfl 提出的问题

如果您在 chrome 上的 3 个选项卡中打开我的 Plunker,则保存和恢复的值(对于每个选项卡)是相同的。如果您在 Firefox 上打开 3 个选项卡,则保存和恢复的值(对于每个选项卡)是不同的

【问题讨论】:

  • 请更具体地说明您遇到的差异。我们不应该离开现场来全面了解问题
  • @charlietfl 如果您在 chrome 上的 3 个选项卡中打开我的 Plunker,则保存和恢复的值(对于每个选项卡)是相同的。如果您在 Firefox 上打开 3 个选项卡,则保存和恢复的值(对于每个选项卡)是不同的。
  • 您的期望是什么?请注意,您的 if 正在使用无效比较。完全不确定这段代码应该做什么
  • 无法在 mac 上的 chrome 51 上重现。 <base> 是相关的还是只是解决问题的一些试验尘埃?
  • @charlietfl 和 Kaiido 我找到了答案。感谢收听。

标签: javascript google-chrome firefox session-storage


【解决方案1】:

经过一些研究并在工作中向一些智者寻求帮助后,我开始明白我做错了什么。

实际上每个 chrome 会话都有自己的 sessionStorage。问题是我在复制标签而不是打开一个新标签。用于复制选项卡的 chrome 使用 window.open 并生成一个子选项卡,该选项卡共享来自其父级的所有信息,包括 sessionStorage。

【讨论】:

    猜你喜欢
    • 2016-07-16
    • 1970-01-01
    • 2023-03-15
    • 2018-09-09
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多