淺談postMessage多頁面監聽事件


最近做了一個Echarts和Highcharts多圖多頁面連動的效果,就用到postMessage

如下介紹:

 

最開始在最外圍的頁面也就是所有頁面的父級頁面添加postMessage監聽事件以便監聽下面子級頁面的動態,代碼:

window.parent.addEventListener('message',function(e){

      if(e.source != window.parent) return;

      var names = localStorage.getItem("toName");

      window.postMessage(names,'*');    //*代表所有頁面

},false)

 

之后在在開始的頁面寫入傳入message指令,代碼:

var objString = JSON.stringify({from:"toOne",value:data.name});   //這里就是多頁面監聽的重點,每次頁面向父級頁面傳入message的時候都是用json格式傳入,之后就能通過判斷from的來源來判斷是點擊了那幅圖要實現什么效果

var clickName = localStorage.setItem("toName",dataName);    //本地保存一個點擊對象的名稱

window.parent.postMessage(data.name,'*');   //將數據的名稱上傳到父級

 

最后在不同頁面的調用,代碼:

window.parent.addEventListener('message',function(e){

    var Title,from;

    try{

      var obj = JSON.parse(e.data);    //轉換json字符

      Title = obj.value;

      from = obj.from;

    }catch(er){

       Title = e.data; 

    }

    if(from=="toOne"){

      //用if判斷是哪個頁面傳入的變量,對應的執行什么代碼  

    }else{

      //不滿足上面的條件又執行什么

    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM