在带有网址http://foo.com/的标签页上,我设置了一个sessionStorage项目,因此 -
sessionStorage.bar="hello";
然后我在同一个域的任何路径上打开一个新窗口 -
window.open("http://foo.com/any/path");
然后在新窗口中我发现 -
sessionStorage.bar === "hello"
是真的.如果我使用带有target ="_ blank"属性的链接打开新窗口,则会发生完全相同的事情.打开新选项卡时也会发生完全相同的事情,而不是新窗口.另一件需要注意的是,这只适用于在打开新窗口之前在sessionStorage上设置的项目.在打开新窗口后,在任一窗口中添加或更改sessionStorage上的任何项目都不会以任何方式影响其他窗口.
我认为sessionStorage应该被限定为单个选项卡/窗口,但显然sessionStorage从另一个窗口打开时会扩展到新的选项卡和窗口.
有办法防止这种情况吗?我可以测试window.opener的存在来检测这样的情况,但是如果可以首先防止它那么会更清洁.
谢谢!