![](/img/trans.png)
[英]Listen for localStorage.setItem on same Window (FireFox & IE)
[英]Listen for changes with localStorage on the same window
我想侦听同一页面上 localStorage API 中发生的更改(而不是像规范所说的那样在多个选项卡中)。
我目前正在使用此代码:
var storageHandler = function () {
alert('storage event 1');
};
window.addEventListener("storage", storageHandler, false);
localStorage.setItem('foo', 'bar');
有谁知道在一个页面上监听 localStorage 事件的普通 JavaScript 方式(没有 jQuery)
由于 JS 是动态语言,因此只需重写原始函数即可。
var originalSetItem = localStorage.setItem;
localStorage.setItem = function(){
document.createEvent('Event').initEvent('itemInserted', true, true);
originalSetItem.apply(this, arguments);
}
更新了上面的答案,因为 document.createEvent 现在是旧的、已弃用的 API 的一部分。
const originalSetItem = localStorage.setItem;
localStorage.setItem = function(key, value) {
const event = new Event('itemInserted');
event.value = value; // Optional..
event.key = key; // Optional..
document.dispatchEvent(event);
originalSetItem.apply(this, arguments);
};
const localStorageSetHandler = function(e) {
alert('localStorage.set("' + e.key + '", "' + e.value + '") was called');
};
document.addEventListener("itemInserted", localStorageSetHandler, false);
localStorage.setItem('foo', 'bar'); // Pops an alert
https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.