在一个URL为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是否存在来检测这种情况,但如果能够在第一时间防止这种情况,那就更好了。
谢谢!