【Vue2项目使用iframe嵌入子页面,传值】

Vue2项目使用iframe嵌入子页面,传值


父向子传值

父页面

<template>
  <div class="hello">
    <h1>父页面</h1>
    <h2>{{region}} {{index}}</h2>
    <iframe src="http://localhost:8081/" id="myIframe" ref="myIframe" width="80%" height="300px"></iframe>
  </div>
</template>

<script>
export default {
  name: 'parent',
  data(){
    return {
      region:"地区",
      index:1,
    }
  },
  watch:{},
  mounted(){
    document.getElementById("myIframe").onload=()=>{
      this.postMessageFn();
    }
    setInterval(()=>{
      this.index++;
      this.postMessageFn();
    },3000)
  },
  methods:{
    postMessageFn(){
      let myIframe = document.getElementById("myIframe").contentWindow;
      myIframe.postMessage({ 
        state:"gue-ok",
        params:{
          region:this.region,
          index:this.index,
        },
      }, '*');
    }
  },
}
</script>

子页面


<template>
  <div class="hello">
    <h1>子页面</h1>
    <h1>**{{ params }}</h1>
  </div>
</template>

<script>

export default {
  name: 'HelloWorld',
  data(){
    return {
      params:{},
    }
  },
  mounted(){
    window.addEventListener("message",(event)=>{
      // 获取传递的数据
      let data = event.data;
      // 处理数据
      console.log('接收到的数据:', data);
      if(data.state == "gue-ok") {
        this.params = data.params;
      }
    })
  },
  beforeDestroy(){
    window.removeEventListener("message");
  },
}
</script>

在这里插入图片描述

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值