我创建了一个简单的例子来证明这一点。
<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 也是如此。
最佳答案
我也刚遇到这个,虽然我花了几分钟才弄清楚它是 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/