12

在关注 Web 链接时,我看到 HTML5 sessionStorage 的不同行为。有时第一页的 sessionStorage 被复制到 TargetPage,有时我在 TargetPage 上得到一个空的 sessionStorage。

谁能解释一下,为什么会这样?

鉴于以下链接:

<a href="TargetPage.html" target="_blank">link</a>

当我通过右键单击打开链接 - >“在新选项卡中打开链接”时,TargetPage 上的 sessionStorage 为空。(预期) 但是当我通过正常的左键单击打开链接时,sessionStorage 被复制到 TargetPage。(意外)

注意:我在 Chrome 和 Firefox 中看到过这种行为。Internet Explorer 9 在这两种情况下都提供了一个空的 sessionStorage。这是我的预期行为。

我创建了一个 jsFiddle 来演示该行为:http: //jsfiddle.net/P9nUv/3/

谁能想到一个跨浏览器解决方案来确保新浏览器选项卡/Windows 的 sessionStorage 为空,无论它们是如何打开的?

任何帮助表示赞赏!

4

2 回答 2

5

恕我直言:

我认为问题是不同的browsing context。在 W3CwebStorage规范中有一段话:

当在具有顶级浏览上下文的浏览上下文中创建新文档时,用户代理必须检查该顶级浏览上下文是否具有该文档来源的会话存储区域

Document在这句话中意味着新的一页。因此,这意味着如果您在新选项卡中打开同一页面,它使用相同browsing context且相同的 sessionStorage,但如果您在新窗口中打开(即 target="_blank"),browsing context则不同。

或者

问题可能出在单独的 CPU 线程上,因此单独browsing context和单独sessionStorage的 s。

于 2013-12-25T17:15:21.983 回答
3

又是一个古老的问题,但我在这个网站上没有找到这个问题的任何答案,我在 Firefox 44 上也遇到了同样的问题。我找到了一个解决方法,你可以在这里找到它:https ://stackoverflow.com/a /35596134/3751509

希望这可以帮助。

于 2016-02-24T07:50:44.547 回答