这是我的代码:
<script type="text/javascript">
function getLocalStorage() {
try {
if (!! window.localStorage) return window.localStorage;
} catch(e) {
return undefined;
}
}
function getAddEventListener() {
try {
if( !! window.addEventListener ) return window.addEventListener;
} catch(e) {
return undefined;
}
}
function eventHandler(e) {
alert("here we are = " + e.storageArea.traveler);
}
function testStorage() {
var db = getLocalStorage();
var addEL = getAddEventListener();
if(addEL) {
addEL('storage', eventHandler, false);
} else {
alert('This browser does not support event listeners');
}
db.setItem('traveler', 'Bill');
db.setItem('destination', 'Ventura');
db.setItem('transportation', 'Airplane');
document.getElementById('results').innerHTML = db.getItem('destination');
}
</script>
</head>
<body onload="testStorage();">
<div id="results"> </div>
</body>
</html>
它成功地将项目插入本地存储并在“结果”元素中显示结果,但事件处理程序不起作用。我刷新浏览器窗口,但没有看到任何警告消息。为什么?
最佳答案
因为存储事件不适用于同一窗口/选项卡。它们仅针对使用相同 localStorage
的其他窗口/选项卡触发。尝试打开两个单独的选项卡,并在一个选项卡中将一些数据插入 localStorage
。
这是一个类似的question这解释了 localStorage
事件的工作原理。
关于html - localStorage eventHandler 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7428671/