Skip to main content

JS | 监听 localStorage

重写 setItem 方法进行监听操作

var originSetItem = localStorage.setItem;

localStorage.setItem = function(key,newValue){

var setItemEvent = new Event("setItemEvent");
setItemEvent.key=key;
setItemEvent.newValue = newValue;
window.dispatchEvent(setItemEvent);
originSetItem.apply(this,arguments);
}

使用案例

const originSetItem = localStorage.setItem;

// 重写localStorage,添加自定义事件
localStorage.setItem = function (key, newValue) {
const setItemEvent = new Event("setItemEvent");
setItemEvent.key = key;
setItemEvent.newValue = newValue;
window.dispatchEvent(setItemEvent);
originSetItem.apply(this, arguments);
};

// 先监听
window.addEventListener("setItemEvent", (e) => {
console.log(e); // log {isTrusted: false, key: 'userInfo', newValue: {…}, type: 'setItemEvent', target: Window, …}
});

localStorage.setItem("userInfo", { id: 1, name: "张山", age: 18 });