Edge中的sessionStorage为什么与Firefox / Chrome不同,如何更改?

问题描述 投票:0回答:2

在Microsoft Edge中,当我右键单击链接并使用“在新选项卡中打开”选项时,我可以查看/访问在初始页面中创建的sessionStorage值。但是,Chrome和Firefox浏览器中不存在此问题。您可以在此JSFiddle中看到此问题。

  1. 打开JS Fiddle链接(在Edge中)
  2. 输入任何文本。观察输入的文本显示在输出部分的文本字段项目中
  3. 右键单击“运行”按钮,然后选择“在新选项卡中打开”。在新的选项卡中可以访问在另一个浏览器选项卡中的上一步中输入的文本。根据documentation,会为每个选项卡创建sessionStorage,并且该存储空间对于该选项卡是私有的。

如果您在Chrome或Firefox中重复这些步骤,则不会看到此问题。为什么Edge浏览器中的sessionStorage行为与Firefox和chrome等其他浏览器不同? Edge浏览器中是否可以解决此问题?

<span>Your Name is</span>&nbsp;<input type="text" id="name"/>
(function() {
// check value exists or not in session storage
if (sessionStorage.getItem("username") == null || sessionStorage.getItem("username") == undefined)
{
   vUserName = prompt("Enter your name");
   sessionStorage.setItem("username", vUserName);
}

document.getElementById("name").value = sessionStorage.getItem("username");
})();
javascript html microsoft-edge session-storage
2个回答
2
投票

原因是:

sessionStorage.getItem("username") == null // false

相反,您应该使用:

sessionStorage.removeItem("username")

现在调用getItem将导致返回值为null,而不是“ null”。


1
投票

doc中说:在新标签页或窗口中打开页面会创建一个具有顶级浏览上下文值的新会话。因此,我认为从右键单击链接并使用“在新选项卡中打开”选项打开的页面应该继承前一页的sessionStorage。您也可以参考this thread中的答案,我认为这是合理的。

此外,也有人认为它是Chrome的an issue。因此,我认为这是设计不同的浏览器中的不同行为。您也可以参考this thread获得解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.