当我在localStorage中编写时,Firefox中出现此异常的原因是什么?
这是在localStorage中写入的函数:
try {
localStorage[key] = JSON.stringify(data);
} catch(e) {
.... // CODE TU PRINT THE ERROR
}
仅供参考,我将Firefox的storageQuota设置为一个非常高的数字,以便节省大量数据,因为我的目的默认值非常低。
如果有人可以提供帮助或需要更多信息,请发表评论或提问。 谢谢!
答案 0 :(得分:1)
您的问题根本不在于本地存储空间。 NS_ERROR_OUT_OF_MEMORY
表示您已退出内存。超过浏览器的本地存储空间配额会导致QUOTA_EXCEEDED_ERR
(或等效)错误。
您的内存出现错误,因为您的JSON.stringify(...)
来电太大而无法进入内存。
你可以
JSON.stringify(...)
的重载。请参阅文档以了解正确用法。你可以修剪'来自JSON的不必要数据并处理任何循环引用。这就是事情,如果你有一个巨大的对象并且该对象被引用了数十次,那么该对象将出现在你的JSON 中几十次。换句话说,作为一个对象,它存在于内存中一次,但是当序列化时,对象会一遍又一遍地被序列化。这会让你的JSON膨胀。取出该对象,将其转换为自己的JSON,并用ID替换对它的引用可以显着缩小您的JSON。如果需要或需要, replacer 参数可用于执行此操作。