本地存储和Internet Explorer 9冒险

时间:2014-11-10 10:58:28

标签: javascript html5 internet-explorer local-storage

我在使用localStorage的Internet Explorer 9中遇到了一个有趣的问题。我使用i18next库在我的Web项目中使用客户端本地化,作为本地化存储,我们决定使用localStorage。我们正在用户首次访问时加载所有本地化(一种语言的整个本地化~450kb)。除了Internet Explorer 9之外,所有浏览器都运行良好。经过一段时间并在语言之间切换时,我开始收到错误 - "SCRIPT5022: DOM Exception: QUOTA_EXCEEDED_ERR (22)",当它尝试从服务器端加载本地化时。当我尝试 - localStorage.remainingSpace时,它会返回:120776

但是,当我尝试使用命令JSON.stringify(localStorage)查看localStorage中存储的内容时,它会返回 - "{}"。所以没有任何东西存储在localStorage中,但它写道只有120kb是免费的。当我尝试使用任何其他网站时,对于命令 - localStorage.remainingSpace,它会显示 - 5000000。另外localStorage.clear()无法停止接收该消息 - "SCRIPT5022: DOM Exception: QUOTA_EXCEEDED_ERR (22)"

问题是 - '为什么Internet Explorer 9认为localStorage几乎已满,而它不包含任何数据?'

感谢任何进步。

1 个答案:

答案 0 :(得分:1)

知道IE可能会有多么令人沮丧。我遇到了类似的问题。

试试这个this jquery plugin。另请参阅this IE9问题是否与您的用例相符 插件本身尝试各种后备,而不是设置实际的cookie。无论浏览器如何,它们都在无缝API中集成了几种持久性机制,只要它在受支持的列表中,它就可以在大小限制范围内工作。

[如果450kb不合适,请尝试创建一个服务器支持的回退,主动获取本地存储中缺少的所需密钥,这样就不会传输整个450k字典。]

祝你好运!