在Microsoft Edge中,当我右键单击链接并使用“在新选项卡中打开”选项时,我可以查看/访问在初始页面中创建的sessionStorage值。但是,Chrome和Firefox浏览器中不存在此问题。您可以在此JSFiddle中看到此问题。
如果您在Chrome或Firefox中重复这些步骤,则不会看到此问题。为什么Edge浏览器中的sessionStorage行为与Firefox和chrome等其他浏览器不同? Edge浏览器中是否可以解决此问题?
<span>Your Name is</span> <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");
})();
原因是:
sessionStorage.getItem("username") == null // false
相反,您应该使用:
sessionStorage.removeItem("username")
现在调用getItem
将导致返回值为null,而不是“ null”。
从doc中说:在新标签页或窗口中打开页面会创建一个具有顶级浏览上下文值的新会话。因此,我认为从右键单击链接并使用“在新选项卡中打开”选项打开的页面应该继承前一页的sessionStorage。您也可以参考this thread中的答案,我认为这是合理的。
此外,也有人认为它是Chrome的an issue。因此,我认为这是设计不同的浏览器中的不同行为。您也可以参考this thread获得解决方案。