【发布时间】:2012-03-06 17:55:45
【问题描述】:
以下示例需要在 IE 9 和至少两个不同的选项卡中运行。
<input type="text" name="data" value="" placeholder="change me" id="data" />
<p id="fromEvent">Waiting for data via <code>storage</code> event...</p>
<script type="text/javascript">
window.addEventListener("storage", function (e) {
if (e.key == 'storage-event-test') {
var newValue = localStorage.getItem('storage-event-test'); // returns old value
// var newValue = e.newValue; // returns new value
$('#fromEvent').html(newValue);
}
}, false);
$('#data').live('keyup', function () {
var changedValue = this.value;
$('#fromEvent').html(changedValue);
localStorage.setItem('storage-event-test', changedValue);
});
</script>
如果它尝试使用var newValue = localstorage.getItem('storage-event-test'); 获取数据并在Tab 1 中输入test,那么它会在我的<p id="fromEvent"> 中正确显示test,但在我的Tab 2
它只写tes
现在,如果我将代码更改为使用 var newValue = e.newValue;,Tab 1 和 Tab 2 都会在 <p id="fromEvent"> 中写入 test
有人可以向我解释一下,为什么它们会返回不同的结果? 我也在 Google Chrome 和 Firefox 中测试过这段代码,他们没有这个问题。
仅作记录,这是在带有 IIS Express 并使用 jquery-1.5.1 的 win 7 Ultimate 64 SP1 上运行的。该错误存在于 32 位和 64 位版本的 IE9
编辑 用正常的 IIS 7.5 测试,结果相同
编辑 2 如果有人能确认这件事发生在他们身上会很好吗?
【问题讨论】:
-
这在 Internet Explorer 11 中仍然是一个问题。
标签: javascript html internet-explorer-9 local-storage