【问题标题】:localStorage.setItem not persisting on refreshlocalStorage.setItem 在刷新时不持久
【发布时间】:2011-11-14 12:26:58
【问题描述】:

我正在尝试使用 HTML5 本地存储做一个超级简单的 setItem 和 getItem。但它似乎不起作用。这有效:

$(document).ready(function () {
  localStorage.setItem('keyA', 'valueA');
  var testA = localStorage.getItem('keyA');
  alert(testA);
});

它会输出一个警告框,上面写着“valueA”。但是,当我注释掉第 2 行(设置项目值)并刷新页面时,它只会提示“null”。

为什么值不持久?就好像它实际上根本没有被存储。

浏览器是 Firefox 6,所以没有问题。可能与在 jquery document.ready 中调用它有关吗?我用谷歌搜索过,但什么也没看到。

如果有人能帮我克服最初的障碍,我将不胜感激,谢谢!

【问题讨论】:

  • 我无法在 Chrome 上重现。
  • 嗯...在 Chrome 中也适用于我,但不适用于 Firefox 6!?
  • 其他人可以在 Firefox 6.0.2(最新版本)中尝试这个吗?我开始认为在这个版本的 Firefox 中有不同的方法可以做到这一点,或者这是一个错误 :( 我尝试了很多不同的本地存储示例,但似乎没有一个在 Firefox 6.0.2 中持续存在。
  • 我安装了 6.0 并且它工作正常。然后更新到 6.0.2 并且价值仍然存在......所以它甚至在我的更新中幸存下来。

标签: javascript local-storage


【解决方案1】:

好的,经过一番挫折后,我找到了解决方案。基本上,我只是从文件系统在本地运行它,作为“快速”的概念证明。它在 Firefox 和 IE9 中都不起作用,但在 Chrome 中确实起作用。

我最终做的是在一个真实的域上尝试这个,这似乎成功了。

所以我可以得出的结论是,Firefox(至少 6.0.2)和 IE9 中的 localStorage 在文件系统路径上运行时不起作用。它在 Chrome 中。 Firefox 和 IE9 需要一个“正确的”域来运行,大概是因为它们在将 localStorate 对象关联到“域”的方式上比 Chrome 更严格(在 Chrome 中,它不需要是这样的域)。

我希望这对人们有所帮助,因为它让我很沮丧! :)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-12-01
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 2015-04-14
  • 2019-04-26
  • 1970-01-01
相关资源
最近更新 更多