【问题标题】:Why does localStorage.getItem fail only in IE9?为什么 localStorage.getItem 只在 IE9 中失败?
【发布时间】:2013-02-07 20:03:17
【问题描述】:

这在 Chrome 和 Firefox 中完美运行:

var webStorageSupported = ('localStorage' in window) && window['localStorage'] !== null;
if (webStorageSupported && localStorage.getItem("get_list_center") !== null) {
  document.getElementById('mail_listing').innerHTML = localStorage.getItem("get_list_center");
}

但是当我查看IE9 中的页面时,我得到了一个未知的异常。如果我键入:document.getElementById('mail_listing').innerHTML;
,我可以在本地存储中获取元素和内容 和 localStorage.getItem("get_list_center"); 分别在控制台中。

当我尝试将innerHTML 分配为本地存储时,发生未知异常。什么给了???

编辑:根据评论的建议,我尝试在一个单独的变量中获取本地存储,然后在 innerhtml 中分配该变量。事实证明,localstorage 确实在检索 HTML 格式的代码,但它无法保存整个字符串:

<table width="100%">......
   <TD width=\"7%\" align=right>12K &nbsp;&nbsp;&nbsp;&nbsp; </TD></TR></TBODY></TABLE></DIV>\r\n<DIV style=\"DISPLAY: no   
   [[CUT OFF FROM HERE]]

我的印象是 localstorage 最多可以保存 5 MB 的文本,Chrome 和 Firefox 就是这种情况,但 IE9 可能不是这种情况(编辑:谷歌搜索后,IE9 supports up to 10MB 很明显这是别的东西)。我该怎么做才能解决这个问题?

Edit2:我已经验证 localStorage 正确分配了整个 HTML 内容,如果在内容设置后立即检索它:

localStorage.setItem('get_list_center', document.body.innerHTML);
var x = localStorage.getItem('get_list_center'); //GETS THE WHOLE HTML CONTENT CORRECTLY.

只是当我从我需要的其他地方获取内容时,内容会被截断。 localstorage 不会在其他任何地方被篡改。

【问题讨论】:

  • 您是否尝试过使用中间变量?在您的实际代码中使用 console.log 来验证每个步骤?

标签: javascript html internet-explorer-9


【解决方案1】:

如果您从 file: URL 浏览,这只是我们应该切换到 Firefox 的众多原因之一 -- IE9 hates localStorage on local documents

【讨论】:

  • 不,这是在 IE9 上的测试服务器上,我肯定是通过 http:// URL 连接的。
猜你喜欢
  • 2022-12-20
  • 1970-01-01
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 2012-02-10
  • 2013-08-05
  • 1970-01-01
  • 2023-03-31
相关资源
最近更新 更多