Bootstrap

Vue进阶(七十九):应用 postMessage 实现父子跨域通信

一、跨域通信

1.子向父通信parent.html

// 页面销毁前,务必去除监听器,否则会造成资源泄露!
beforeDestory () {
  window.removeEventListener('message', this.listenerFun)
}

mounted() {
  window.addEventListener('message',this.listenerFun)
}

methods: {
  listenerFun (e) {
  console.log(e.data);
    if(e.data.msg==='xxx'){
            // 业务处理逻辑
    }
  }
}

child.html

window.parent.postMessage({ msg:"xxx"},'*');

2.父向子通信parent.html

var myframe = document.getElementById('myframe') //获取iframe

myframe.contentWindow.postMessage({data:'parent'}, childDomain);//childDomain是子页面的源(协议+主机+端口号)

child.html

window.addEventListener('message', function(e){
      console.log(e.data.data);
})

注意:

二、示例

parent.html




  
  iframe父级页面
  



  

我是父级页面

div内容

child.html

  
    
    
        
        iframe子页面
    
    
        

我是内嵌的子页面