1. 程式人生 > >js跨頁面觸發事件,利用storage監聽事件

js跨頁面觸發事件,利用storage監聽事件

最近做的一個專案遇到的這個問題,首頁是一個列表頁,列表上有一些操作需要新開一個標籤頁展示,在新開頁面儲存之後要重新整理之前的列表頁,也就是跨頁面觸發重新整理列表。
我的解決方案是利用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’的值就會觸發列表頁的重新整理