好,请多多包涵,我会尽力解释这个问题。
我有3个HTML(和适当的.js)文件。
我可以将内容添加到sessionStorage中,并且当我位于任何一个HTML文件中时,我都会显示sessionStorage的内容。
我在最新版本的firefox上本地运行文件,据我所知,它在file://中支持sessionStorage
因此,一切工作正常,我可以在HTML1中将内容添加到sessionStorage并转到HTML2,数据将正确显示。我有了sessionStorage的概念,一切都很好。
但是这是很奇怪的地方:
当我将内容添加到HTML1中的sessionStorage并通过a-href转到HTML2时,sessionStorage的内容就在那里。但是,如果我在网址栏中单击并按Enter,则内容将丢失。 SessionStorage为“ null”。我回到HTML1并按ctrl + r(重新加载),但仍然为null。但是,当我单击URL栏并按Enter(当我在HTML1页面中)时,sessionStorage内容返回。
我已经进行了几项检查,似乎当我单击url栏并按Enter时,创建了另一个sessionStorage实例。
但是,如果我在某些服务器上上传项目,则不会发生这种情况。
我想知道为什么-如果firefox支持sessionStorage-在本地运行该应用程序时会发生这种情况,实际上发生了什么?
感谢您的任何解释。
最佳答案
好的,由于您正在打开文件,因此它在本地不起作用,您需要在服务器上运行它。
浏览器将使用URL(当然还有其他内部内容)将会话绑定在一起,这就是为什么它可以在您上载到的任何服务器上工作的原因。这不适用于文件URL,因为浏览器似乎将它们视为来自不同位置的不同页面,因此不会共享会话。
如果您在本地设置WAMP或其他任何东西并通过它运行它,那么它将起作用。这正是xavierm02所建议的。
关于javascript - 奇怪的 session 存储行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13893930/