Firefox中的"localStorage"仅在页面在线时才有效吗?

hob*_*ron 29 javascript safari firefox html5

所以我正在玩HTML 5和localStorage,我注意到当我在本地主机上的Firefox中运行页面时,我的值才会被存储(即http://127.0.0.1:8000/test/index. html),但是当我在本地运行文件(file:/// C:/test/index.html)时,我的值不会被存储.Safari 4在两种设置方面都没有问题.那么有人知道这是否是设计 - > Mozilla开发人员中心的DOM存储

(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);
}
Run Code Online (Sandbox Code Playgroud)

小智 23

这似乎是一个错误: 错误507361 - localStorage在文件中不起作用:///文件
希望很快修复!

2011-09-13:修复了错误,在'Mozilla8'中实现.我用Firefox 8对它进行了测试,现在可以使用了.

  • 在此期间,您可以使用Chrome离线测试您的脚本,因为它没有此错误. (3认同)

And*_*yle 21

那么,链接的文件就是这么说的

localStorage与globalStorage [location.hostname]相同,但作用域为HTML5原点(方案+主机名+非标准端口)除外

我不想声称我100%理解这意味着什么,但括号中的位表明URL需要具有某些属性 - 特别是方案和主机名是Firefox认为HTML 5的来源.我怀疑file:///网址与此不符,而您http://127.0.0.1/的确如此.

编辑:查看W3C 对Origin属性描述,步骤7看起来可能导致问题.根据如何实现localStorage处理,可能期望步骤12返回的3元组,但对于file://URL,返回值可能几乎为任何东西.

那么,呃,我想这是设计的. 经过反思,很可能这不是真正的设计; 没有理由不localStorage 应该file://URL 工作.它可能只是一个浏览器特定实现的输出不符合另一个的期望的情况.

至于解决方法,globalStorage不会在这里做你想做的事情吗?