gpt4 book ai didi

javascript - localStorage 的 'storage' 事件中的未定义属性

转载 作者:太空宇宙 更新时间:2023-11-04 14:07:58 24 4
gpt4 key购买 nike

localStorage 更改时应触发的事件在 Firefox 中似乎缺少信息。

我设置了以下事件处理程序:

 function storageEventHandler(e){
alert("key " + e.key);
alert("oldValue " + e.oldValue);
alert("newValue " + e.newValue);
alert("url " + e.url);
}

window.addEventListener('storage', storageEventHandler, false);

应该由此触发:

localStorage.setItem('foo', 'bar');

但是,事件中的所有属性(例如 e.key 和其他所有内容)都是未定义的。我正在使用 Firefox 3.16。为什么事件属性未定义?

编辑。这是我正在使用的所有代码。存储事件在 Firefox 3.16 中触发,但在 Firefox 4.0b8 中不触发

此外,重要的是,我从 XAMPP http://localhost/index.html 运行它从文件运行它://使其死亡localStorage Getting NULL?

<!DOCTYPE html5>
<html lang="en">
<head>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
$(function() {
var edit = document.getElementById('edit');

$(edit).blur(function() {
localStorage.setItem('todoData', this.innerHTML);
});

// when the page loads
if (localStorage.getItem('todoData')) {
edit.innerHTML = localStorage.getItem('todoData');
}

window.addEventListener('storage', storageEventHandler, false);

function storageEventHandler(e){
alert('localStorage event fired')
}
});
</script>
</head>
<body>
<header>
<h1> My Simple To-Do List </h1>
</header>
<section>
<ul id="edit" contenteditable="true">
<li></li>
</ul>
</section>
<em>Add some items, and refresh the page. It'll remember what you typed.</em>
</body>
</html>

编辑 #2:这是一个更简单的示例,显示了浏览器之间的问题...

<html>
<head>
<script>
function storageEventHandler(e){
alert('localStorage event fired')
}
window.addEventListener('storage', storageEventHandler, false);
localStorage.setItem('foo', 'bar');
alert('ok')
</script>

</head>
<body>
Test
</body>
</html>

最佳答案

Firefox 3.6 (Gecko 1.9.2) 没有实现这些属性(规范正在改变,当时大多数其他浏览器也没有实现这些属性)。这在 Firefox 4 (Gecko 2) 中得到修复。参见 https://bugzilla.mozilla.org/show_bug.cgi?id=501423

[edit] 你的测试用例是单页的。 spec说:

When the setItem(), removeItem(), and clear() methods are called on a Storage object x that is associated with a local storage area, if the methods did something, then in every HTMLDocument object whose Window object's localStorage attribute's Storage object is associated with the same storage area, other than x, a storage event must be fired, as described below.

所以你需要在同一个域上有一个单独的页面来观察这个事件。

关于javascript - localStorage 的 'storage' 事件中的未定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4594033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com