【vue】【JavaScript 】iframe父子传参方法

1、html代码

<iframe ref="iframeRef" id="iframeId" src="YOU_CHILD_PAGE" width="100%" height="300px"></iframe>

2、父页面给子页面、子页面给父页面发送消息方法

/**
 * iframe 父子相互传参方法
 *
 * @param msg 可传入数字、对象、字符串等,方法内将其转化成字符串
 * @param type 1:父 => 子、2:子 => 父
 * @param iframeEle 当type为1时需要,获取方式:
 * document.getElementById("iframeId")或document.getElementById(this.$refs.iframeRef)
 */
function pushMessage(msg, type, iframeEle) {
  if (type === 1) {
    // 父 => 子
    iframeEle.contentWindow.postMessage(JSON.stringify(msg), "*");
  } else if (type === 2) {
    // 子 => 父
    window.parent.postMessage(JSON.stringify(msg), "*");
  }
}

备注:msg可以传入字符串、数组、对象或数组对象等格式参数,依据自身的业务需求来定。

3、绑定事件监听

// 接收iframe推送过来的数据(无论父子级)
window.addEventListener('message', YOU_RECEIVE_FUNCTION, false)

1)addEventListener三个参数介绍:

第一个参数event:监听的事件名称

第二个参数是函数:需要执行的事件

第三个参数是useCapture(变量):用来判断是捕获还是冒泡

2)第三个参数是useCapture(默认为false)

  • true,在捕获阶段触发事件 (顺序是由父到子)
  • false,在冒泡阶段触发事件(顺序是由子到父)
  • once:只执行一次。
  • passive:承诺此事件监听不会调用 preventDefault,这有助于性能。
  • useCapture:是否捕获(否则冒泡)。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值