Html 新窗口上的会话存储不是';t在使用target=";跟踪链接时为空_“空白”;

Html 新窗口上的会话存储不是';t在使用target=";跟踪链接时为空_“空白”;,html,cross-browser,session-storage,Html,Cross Browser,Session Storage,我看到HTML5会话存储在跟踪Web链接时的不同行为。有时第一页的会话存储被复制到TargetPage,有时我在TargetPage上得到一个空会话存储 谁能解释一下,为什么会这样 鉴于以下链接: <a href="TargetPage.html" target="_blank">link</a> 当我用鼠标右键单击->“在新选项卡中打开链接”打开链接时,TargetPage上的会话存储为空。(预计) 但是,当我用正常的左键单击打开链接时,会话存储会被复制到Targ

我看到HTML5会话存储在跟踪Web链接时的不同行为。有时第一页的会话存储被复制到TargetPage,有时我在TargetPage上得到一个空会话存储

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

鉴于以下链接:

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

当我用鼠标右键单击->“在新选项卡中打开链接”打开链接时,TargetPage上的会话存储为空。(预计) 但是,当我用正常的左键单击打开链接时,会话存储会被复制到TargetPage。(意外)

注意:我在Chrome和Firefox中见过这种行为。Internet Explorer 9在这两种情况下都提供空会话存储。这是我预期的行为

我创建了一个JSFIDLE来演示该行为:

有人能想出一个跨浏览器解决方案来确保新浏览器选项卡/窗口的会话存储为空,无论它们是如何打开的吗

感谢您的帮助

IMHO:

我认为问题出在不同的
浏览上下文中。W3C规范中有一段:

在具有 在顶级浏览上下文中,用户代理必须检查 顶级浏览上下文有一个会话存储区域 文件来源

文件
在本报价中表示新页面。 因此,这意味着如果在新选项卡中打开相同的页面,它将使用相同的
浏览上下文和相同的会话存储,但如果在新窗口中打开(即target=“\u blank”),则
浏览上下文将不同


这个问题可能是由不同的CPU线程造成的,所以分离
浏览上下文
和分离
会话存储
s。这又是一个古老的问题,但我在这个网站上没有找到这个问题的任何答案,我只是在Firefox 44上遇到了同样的问题。我找到了一个解决方法,您可以在这里找到:


希望这能有所帮助。

我认为可能是这样的:
当一个新的顶级浏览上下文是由一个脚本在一个现有的浏览上下文中创建的,或者是由用户在一个现有的浏览上下文中跟随一个链接创建的,或者是以其他与特定文档相关的方式创建的,并且创建不是会话存储的新开始,然后,在创建文档时,必须将该文档的原始会话存储区域复制到新的浏览上下文中。但是,从那时起,两个会话存储区域必须被视为独立的,不能以任何方式相互影响。