所以我正在使用HTML 5和localStorage,我注意到当我在本地主机上的Firefox(即http://127.0.0.1:8000/test/index.html)中运行页面时,我的值才会被存储,但是当我运行时本地文件(file:/// C:/test/index.html)我的值不存储。 Safari 4在两种设置方面都没有问题。 那么有人知道这是否是设计 - > DOM Storage on the Mozilla Developer Center
(Firefox 2允许访问存储空间 域层次结构中较高的对象 比当前的文件。这不是 在Firefox 3中允许更长时间 安全原因。另外,这个 建议除了HTML 5之外 从HTML 5规范中删除 赞成localStorage,这是 在Firefox 3.5中实现。)
或者是否有解决方法?
我不知道因为只能在线工作的离线存储听起来很傻:P
如果有人想知道,代码就像它一样容易:
function save()
{
localStorage.setItem('foo','bar');
}
function load()
{
var test = localStorage.getItem('foo');
alert(test);
}
答案 0 :(得分:23)
这似乎是一个错误:Bug 507361 - localStorage doesn't work in file:/// documents
希望很快就会解决!
2011-09-13:修复了错误,在'Mozilla8'中实现。我用Firefox 8对它进行了测试,现在可以使用了。
答案 1 :(得分:21)
好吧,链接的文件说的是
localStorage与globalStorage [location.hostname]相同,但作用域为HTML5原点(方案+主机名+非标准端口)
我不想声称我100%理解这意味着什么,但括号中的位表示URL需要具有某些属性 - 特别是方案和主机名是Firefox认为HTML 5的来源。我怀疑file:///
网址与此匹配不一致,而http://127.0.0.1/
确实如此。
编辑:查看W3C的description of the Origin property,第7步看起来可能会导致问题。根据{{1}}处理的实现方式,可能期望步骤12返回3元组,但对于localStorage
URL,返回值可能几乎为任何东西。
所以,呃,我想这是设计的。经过反思,很可能这不是真的设计;没有理由file://
不应为localStorage
网址工作。它可能只是一个浏览器特定实现的输出不符合另一个的期望的情况。
至于解决方法,file://
会不会在这里做你想做的事情吗?
答案 2 :(得分:0)
截至2020年10月5日,Firefox上的localStorage似乎再次被破坏。试试这个:
更糟糕的是,如果执行上述第1步和第2步,然后在新选项卡中打开演示的另一个副本,则不仅新选项卡不会获取已保存的数据,而且原始演示页面(刷新)也已消失返回默认值;就像在存储的数据上新添加了一个标签一样。