当跟踪带有target =“_ blank”的链接时,新窗口上的sessionStorage不为空

时间:2013-06-25 12:24:34

标签: html5 cross-browser session-storage

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

任何人都可以解释一下,为什么会这样?

给出以下链接:

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

当我通过右键单击打开链接时 - &gt; “在新标签中打开链接”,sessionStorage在TargetPage上为空。 (预期) 但是当我用正常的左键单击打开链接时,sessionStorage会被复制到TargetPage。 (意外的)

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

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

任何人都可以想到一个跨浏览器的解决方案,以确保新浏览器选项卡/ Windows的空SessionStorage,无论它们如何被打开?

感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

IMHO:

我认为问题在于browsing context。在W3C webStorage规范中有一段:

  

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

此引文中的

Document表示新页面。 所以这意味着如果你在新标签页中打开它使用相同的browsing context和相同的sessionStorage,但是如果你在新窗口中打开(即target =“_ blank”),browsing context就不同了。

问题可能是单独的CPU线程,因此单独的browsing context和单独的sessionStorage

答案 1 :(得分:2)

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

希望这有帮助。