0

我在使用 localForage 的 Firefox 中遇到了一些特殊的行为。我使用标准的“setItem”表单设置了一个页面来加载两个数组:

 <script src="localforage.js"></script>
 <body>
<script>
var data = [1,2,3,4,5];
localforage.setItem("saveData", data, function(err, value) {
if (err) {
 console.error('error: ', err);
} else {    
console.log("Data Saved");
}});

localforage.getItem("saveData", function (err, value) {
if (err) {
   console.error('error: ', err);
} else {
    console.log('saveData is: ', value);
    localforage.keys(function(err, keys) {
    console.log("Keys: " + keys);
    console.log("Number of keys: " + keys.length);
    });
}});
</script>
</body>
</html>

阵列已正确保存。

然后我制作了第二页,使用完全相同的“getItem”函数。

在 Chrome 中,数据显示出来了,但在 Firefox 中,它根本没有列出,也无法打开。

有没有其他人经历过这个?在 Firefox 中,即使在同一会话中打开第二页也无法找到保存的文件。我尝试更改 security.fileuri.strict_origin_policy,但没有任何区别。

我宁愿使用 Firefox,但如果它不断丢失保存的数据,我就不能。

4

2 回答 2

1

我也有同样的问题,但经过一些研究、试验和讨论后解决了。FireStorage Plus 等扩展!简单的会话存储不能完美地检测这些数据,特别是如果它是在原始根页面/文件以外的页面/文件上执行的。

我的解决方案是使用原生 FF Storage Inspector。只有这样我才能看到我丢失的所有数据。即使正在设置数据,这些扩展也没有显示数据。

参考:localForage setItem/getItem unreliable in Firefox / FireStorage Plus

在此处输入图像描述

此外,对于 localForage 问题的未来帮助, 请在https://webchat.freenode.net/尝试他们的 IRC 聊天#localforage并查找tofumatt。他是你想与之商议的大师。^5

于 2016-04-07T20:45:50.613 回答
0

你是file://从而不是测试这个http://吗?我相信在 Firefox 中,如果您从file://. 所以在这种情况下,你需要运行一个 HTTP 服务器——最简单的方法是做python -m SimpleHTTPServer 8080,然后转到http://localhost:8080. Chrome 可能会有所不同。

于 2016-04-16T20:49:53.167 回答