在带有 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 以检测这种情况,但如果可以首先防止它会更干净。
谢谢!