js跨頁面觸發事件,利用storage監聽事件
阿新 • • 發佈:2019-01-28
最近做的一個專案遇到的這個問題,首頁是一個列表頁,列表上有一些操作需要新開一個標籤頁展示,在新開頁面儲存之後要重新整理之前的列表頁,也就是跨頁面觸發重新整理列表。
我的解決方案是利用storage監聽事件,當觸發localStorage的值發生改變是,觸發storage事件
//列表頁
storageChange(key,fn,value){//key為要儲存的名字,fn為觸發storage後要執行的方法,value可以自己設定存的值,可以利用這個值跨頁面傳參
var val = value ? JSON.stringify(value) : new Date().getTime()//為value設定預設值
localStorage.setItem(key,val)
window.addEventListener('storage',function(e){
if(e.key == key){//判斷是否是目標值發生改變
fn(e.newValue,e.oldValue)//執行fn,返回新值和舊值
}
})
}
storageChange('kim',function(){
console.log('列表重新整理了')
})//呼叫
//新開頁面
localStorage.setitem('kim',new Date().getTime())//只要修改localStorage中‘kim’的值就會觸發列表頁的重新整理