我使用带存储参数的方法addEventListener来检测存储的变化。但是,它没有用。我是在Chrome上做的。有什么问题?
window.addEventListener('storage', function(storageEvent){
console.log(storageEvent);
});
function setData(){
localStorage.setItem('superpower', 'heatvision');
}
function clearData(){
localStorage.clear()
}

<button onClick="setData()">Set</button>
<button onClick="clearData()">Clear</button>
&#13;
答案 0 :(得分:0)
在同一个窗口中检测存储更改是不可能的。由于您使用的是getItem
和setItem
,因此请尝试使用包装器方法,然后调用该包装器方法:
const myLSInterface = {
listeners: [],
set: function(key, value) {
localStorage.key = value;
const thisEventObj = { key, value };
this.listeners.forEach(listener => listener(thisEventObj));
},
addListener: function(listener) {
this.listeners.push(listener);
},
};
myLSInterface.addListener((eventObj) => {
console.log(JSON.stringify(eventObj));
});
myLSInterface.set('foo', 'bar');
查看直播(由于安全问题无法在SO上完成):
答案 1 :(得分:0)