我在关注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,无论它们如何被打开?
感谢任何帮助!
答案 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>
希望这有帮助。