任何人都可以解释我,为什么会这样?
鉴于以下链接:
<a href="TargetPage.html" target="_blank">link</a>
当我通过右键单击打开链接时 – > “在新标签中打开链接”,sessionStorage在TargetPage上为空. (预期)
但是当我用正常的左键单击打开链接时,sessionStorage会被复制到TargetPage. (意外)
注意:我在Chrome和Firefox中看到过这种行为.在这两种情况下,Internet Explorer 9都提供空的sessionStorage.这是我的预期行为.
我创建了一个jsFiddle来演示行为:http://jsfiddle.net/P9nUv/3/
任何人都可以想到一个跨浏览器的解决方案,以确保新浏览器选项卡/ Windows的空SessionStorage,无论它们如何被打开?
任何帮助表示赞赏!
解决方法
我认为问题出在不同的浏览环境中.在W3C webStorage
规范中有一段:
When a new Document is created in a browsing context which has a
top-level browsing context,the user agent must check to see if that
top-level browsing context has a session storage area for that
document’s origin
本报价中的文件表示新页面.
所以这意味着如果你在新标签页中打开它使用相同浏览上下文和相同sessionStorage的相同页面,但是如果你在新窗口中打开(即target =“_ blank”),浏览上下文就不同了.
要么
问题可能是单独的cpu线程,因此单独的浏览上下文和单独的sessionStorage.