vue中iframe結合window.postMessage實現父子頁面間的通信


在一個項目的頁面中使用iframe嵌入另一個項目的頁面,需要實現父子,子父頁面的通信

一、語法

         otherWindow.postMessage( message , targetOrigin )

  1. otherWindow 其他窗口的一個引用,比如iframe的contentWindow屬性、執行window.open返回的窗口對象、或者是命名過或數值索引的window.frames。
  2. message 將要發送到其他window的數據。
  3. targetOrigin 是限定消息接收范圍(域名設置),不限制使用 '*’。在發送消息的時候,如果目標窗口的協議、主機地址或端口這三者的任意一項不匹配targetOrigin提供的值,那么消息就不會被發送,只有三者完全匹配,消息才會被發送。

二、傳值

1.父頁面 向 子頁面 傳值

  // 父頁面代碼

  sendMessage(){

    this.$refs.iframe.contentWindow.postMessage(' 我是父頁面傳給子頁面的數據 ' ,‘*’);

    // this.$refs.iframe.contentWindow.postMessage({ data:{code:'success',test:' 我是父頁面傳給子頁面的數據 '} },‘*’)

  }

  // 子頁面代碼 

  methods:{

    handleMessage(event){

      const data = event.data.data;

      if(data.code == 'success'){

        console.log(data.test);

      }

    }

  },

  mounted(){

    window.addEventListener('message', this.handleMessage)

  }

2.子頁面 向 父頁面 傳值

  // 父頁面代碼

  methods:{

    handleMessage(event){

      const data = event.data.data;

      if(data.code == 'success'){

        console.log(data.test);

      }

    }

  },

  mounted(){

    window.addEventListener('message', this.handleMessage)

  }

       // 子頁面代碼

  submit(){

    this.$refs.iframe.contentWindow.postMessage({ data:{code:'success',test:' 我是子頁面傳給父頁面的數據 '} },‘*’)

  }

  

  

  

  

 


免責聲明!

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



猜您在找 window.postMessage()實現(iframe嵌套頁面)跨域消息傳遞 使用window.postMessage實現跨域通信 記一次:iframe嵌套網頁,利用window.postMessage()實現子父窗口相互傳值 iframe 父子間傳值通信 淺析前端廣播式通信頻道Broadcast Channel是什么、通信方式、如何使用、前端跨頁面通信BroadcastChannel(廣播頻道監聽/同源)與window.postMessage(點對點/可跨域)的區別 iframe父子頁面間互相調用方法和屬性