多个页面通信有很多方法,其中之一便是使用storage。
storage只能够监听同源非同一页面中的storage变化,如果想监听同一个页面的storage变化,我们需要改写原生方法(应用了装饰者模式),抛出自定义事件来监听storage的变化。
1.监听同源页面storage变化:
ps:如何产生同源页面,可以在一个文件夹下定义两个html,由一个html通过href跳转到另一个html即可。
window.addEventListener('storage',function(e){
console.log(`键:${e.key},旧值${e.oldValue},新值:${e.newValue})`);
});
2.监听同一个页面中storage的变化:
var originalSetItem=localStorage.setItem;//保存元素setItem方法
localStorage.setItem=function(key,value){ //改写
let setItemEvent=new Event('setItemEvent'); //自定义事件
setItemEvent.key=key;
setItemEvent.value=value;
window.dispatchEvent(setItemEvent); //派发事件
orig