【问题标题】:Is "localStorage" in Firefox only working when the page is online?Firefox 中的“localStorage”是否仅在页面在线时有效?
【发布时间】:2010-12-02 08:26:52
【问题描述】:

所以我正在玩弄 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);
}

【问题讨论】:

  • ...但在 chrome 下似乎可以正常工作
  • 感谢上帝,我找到了这个...我一直在尝试在 Firefox 中进行调试,并且想知道我哪里出错了,因为我看不到我的代码有任何问题。它在使用 file:// URL 时在 IE 和 Chrome 中工作,但 Firefox 不工作。一旦我把它放在服务器上,它就工作得很好。
  • 你好,我从 2011 年开始给你写信。它仍然没有修复! bugzilla.mozilla.org/show%5Fbug.cgi?id=507361
  • 你好未来人!你生活在一个多么黯淡的未来!我希望你是用你的飞行汽车写的! (真的:有什么问题?这不是问题 -> 参见 IE、Safari 和 Chrome)
  • I wonder because offline storage that works only online sounds silly :P+1

标签: javascript firefox safari html


【解决方案1】:

截至 2020 年 10 月 5 日,Firefox 上的 localStorage 似乎又被破坏了。试试这个:

  1. 下载Mozilla演示页面:https://mdn.github.io/dom-examples/web-storage/
  2. 将动物/颜色更改为非默认值。
  3. 关闭页面的标签(或浏览器)。
  4. 再次下载该页面。它恢复了默认值。 (Firefox 81:0 等)

更糟糕的是,如果您执行上述第 1 步和第 2 步,然后在新选项卡中打开另一个演示副本,则新选项卡不仅无法获取保存的数据,而且原始演示页面(刷新)已经消失回到默认值;就好像新标签已在已保存的数据上踩踏一样。

【讨论】:

    【解决方案2】:

    这似乎是一个错误:Bug 507361 - localStorage doesn't work in file:/// documents
    希望很快就解决了!

    2011-09-13:错误已修复,在“Mozilla8”中实现。我用 Firefox 8 对此进行了测试,现在可以使用了。

    【讨论】:

    • 同时您可以使用 Chrome 离线测试您的脚本,因为它没有这个 bug。
    • 目前无法检查,但我认为这是最终答案!
    【解决方案3】:

    嗯,链接的文档确实这么说

    localStorage 与 globalStorage[location.hostname] 相同,除了被限定为 HTML5 源(方案 + 主机名 + 非标准端口)

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

    edit:查看 W3C 的 description of the Origin property,第 7 步看起来可能会导致问题。根据 localStorage 处理的实现方式,它可能期望第 12 步返回的 3 元组,但对于 file:// URL,返回值可能几乎是任何值。

    所以,呃,我想这是设计使然。 仔细想想,这很可能不是设计使然。 localStorage 没有理由适用于 file:// URL。这可能只是一个特定于浏览器的实现的输出与另一个的期望不匹配的情况。

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

    【讨论】:

      猜你喜欢
      • 2017-04-03
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多