vue页面嵌套iframe页面传值、调用、首次传值获取不到、有缓存数据问题

  <!-- iframe -->

      <!--  -->

    <el-dialog :visible.sync="dialogVisible" width="500px" @close="closeDialog" v-if="dialogVisible">
      <iframe id="iframe" ref="iframe" src="/static/test.html" width="100%" height="260px"></iframe>
    </el-dialog>

通过v-if的创建销毁dom,可以解决iframe页面缓存问题

父传子传值

// 发起会话
    openif(infodata) {
      this.dialogVisible = true;
      var that = this;
      this.$nextTick(() => {
        //获取iframe元素
        const iframe = document.getElementById("iframe");
        iframe.onload = function (e) {
          //通过.contentWindow.postMessage(data,"*")向iframe子组件传值
          iframe.contentWindow.postMessage({
           

            // 暂时先写死
            'stationId': '69999', // 写死
            'loginId': '17999', // 坐席工号
            // 'dest': infodata.user_mobile, // 手机号+0
            'dest': "13455955635", // 手机号+0
            'username': infodata.ter_user_name ? infodata.ter_user_name : ""// 客户姓名
          }, "*");
        }
      });
    },
iframe.onload用来解决父传子首次传值获取不到数据的问题
子组件接收传值
window.addEventListener("message", message => {
        console.log(message ); 
})
 

  vue父页面调用ifarme子页面方法

 
 // 监听用户关闭对话框,执行签出操作
    closeDialog() {
      const iframe = document.getElementById("iframe");
      iframe.contentWindow.jtapi_Loginout("17999", "69999");
    },
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值