html的iframe跨域嵌套vue项目页面,使用postMessage的方法实现父子页面传值

当前应用场景:u3d和前端项目对接,需要使用到前端的设置页面和详情功能,需要操作前端项目的方法,比如打开vue项目的弹窗,修改详情的数据等操作,当前记录的是修改vue页面的数据操作。vue项目使用技术:vue和less编写样式,html页面使用技术:html5和javascript

使用方案:postMessage的方法

vue向iframe发送数据的方法:

sendMessage(data) {
      //子向父发送数据
      window.parent.postMessage(
        {
          data: data,
        },
        "*"
      );

iframe接收vue数据的方法:

window.addEventListener('message',function(event){

              //父接收子数据
              //  数据在event.data对象中
            console.log(event.data,222)
          })

iframe向vue发送数据的方法:

var btn = document.getElementById("btn")
        btn.onclick = function(){
            // 父向子发送数据
            let frame = document.getElementById('child');  // 或者用vue语法 let frame = this.$refs.iframeId
            frame.contentWindow.postMessage({
              name:'i am a father'
            },'*'); 
        }

vue页面监听iframe发来的数据:

 window.addEventListener("message", this.testsend, false);
 testsend(event) {

      if (event.data.name == "i am a father") {

     //vue事件

        this.xiugai();

      }

    },

完整代码:

html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值