我为孩子们制作了一个小型JavaScript数学游戏,使用localStorage
存储高分。它工作正常,做它应该做的事情,并且即使在浏览器关闭或计算机关闭时也能保存高分。但是,今天我尝试使用不同的Internet连接来测试游戏,我使用的两个localStorage
项目(一个用于分数,一个用于名称)都返回undefined
。
两次游戏都是在Windows 7(同一台PC)的Chrome v55中播放的。最初它是通过我们的家庭Wi-Fi连接,但今天它是通过公共(咖啡店)Wi-Fi连接。
localStorage
仍然适用于公共Wi-Fi连接 - 我可以设置新值并检索它们 - 但我想知道为什么它没有存储原始值。没有清除浏览器历史记录或Cookie。有谁知道localStorage
是否有针对不同互联网连接的单独容器?
更新:localStorage
对象正常工作 - 它保存并保存数据 - 唯一的问题是当连接到不同的网络连接时检索到它会丢失值。
这是用于从localStorage
获取数据的代码:
if (localStorage.mb_hiscore == 0) { localStorage.mb_name = " "; }
hiscore.innerHTML = localStorage.mb_hiscore + "<br />" + localStorage.mb_name;
再次更新:Chrome在公共Wi-Fi和我的家庭Wi-Fi上显示相同的来源:
此外,我在公共Wi-Fi连接上设置的localStorage
值在我以后在我的家庭网络上检索时仍然存在,所以到目前为止只有一次Chrome丢弃了这些值。 / p>
答案 0 :(得分:2)
每个来源都有自己的localStorage
。如果您检查document.location.origin
的值,您可能会得到类似这样的内容:“http://localhost:8080”
根据您访问应用的方式,如果这些部分中的任何部分发生变化,无论是主机名,端口号还是协议,如果不同的来源因此修改自己的存储,您将会处理。从浏览器的角度来看,这是一个完全不同的终点。
尝试再次重现您的问题,这次请注意您正在使用的地址。