javascript - 为什么将空文本框值保存到 sessionStorage 会导致 IE8 崩溃?

标签 javascript internet-explorer-8 web-storage

我创建了一个简单的例子来证明这一点。

<input id="search" type="text">

var input = document.getElementById('search');
window.sessionStorage.setItem('test', '');
alert(input.value === '');
window.sessionStorage.setItem('test2', input.value);
alert('complete');

在 IE8 中运行它会导致整个浏览器在存储 input.value 时崩溃并出现标准错误 - “Internet Explorer 遇到问题需要关闭...”。

localStorage 也是如此。

JSFiddle demo here

最佳答案

我也刚遇到这个,虽然我花了几分钟才弄清楚它是 sessionStorage造成这种情况而不是我们的 IE8 占位符小部件、knockout.js 绑定(bind)或 modernizr。我们的文本框是 <input type="search" .../>这也不是问题所在。

最奇怪的是,如果您使用 IE8 调试器工具检查该值,该值实际上是一个空字符串。但是,这似乎为我解决了这个问题:

window.sessionStorage.setItem('test2', input.value || '');

... 似乎 IE8 更喜欢文字空字符串,而不是嵌套在另一个对象中或从函数返回的字符串......?

关于javascript - 为什么将空文本框值保存到 sessionStorage 会导致 IE8 崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19049965/

相关文章:

javascript - CSS - 使用 Jquery 动态计算 IE11 的宽度

Python实现简单的Web数据存储

javascript - 使用 Javascript 在 localStorage 中存储大型整数数组的最有效方法

javascript - 使用 postMessage API 时如何确保弹出窗口已完全加载?

javascript - 如何在 JavaScript 中对 url 进行编码

c# - 使用更新面板转义关键问题

javascript - JSON 示例让我感到困惑 - 关于 JSON.parse、JSON.stringify、localStorage.setItem 和 localStorage.getItem

javascript - HTML上传文件小操作

javascript - Leaflet JS map 和函数来选择新的数据层

javascript - IE8 jquery json响应触发下载