不同域iframe主动与父容器通讯的方法

本文介绍了一种使用iframe实现跨域通信的方法,通过在父页面添加消息监听事件,并在iframe页面定义发送消息函数来完成双向通信。

web前端(H5、混合APP)开发中,经常会遇到跨域的坑,而基于iframe的跨域更是坑中巨坑。而且也会常常遇到父容器与iframe页面间进行交互操作的需求,可以称之为通讯。一般跨域有几种情况:

1、主域(domain)相同,子域不同

相对来讲这种跨域是最好处理的,只要设置document.domain = "主域" 即可。

2、两个域之间好不相干

这种详情是最坑爹的,如果iframe嵌入的是别的站点,且该站点不能配合我们进行通讯处理,那么,我下面所讲的方法基本没戏。

那么,iframe页面怎么主动与父容器进行通讯呢?

方法如下:

1)在主页面main.html,添加一个H5的消息监听事件:

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

  //处理消息

}, fasle);

2)在iframe页面iframe.html,添加一个发送消息的函数

<script>

  function postParentMessage(data){

    top.postMessage(data, '*');

  }

</script>

3)在iframe页面需要发送消息给父容器的地方调用postParentMessage函数

<script>

  function pay(orderId){

    postParentMessage(orderId);

  }

</script>

<a href="#" onclick="pay(orderId);">支付</a>

 

可以尝试一下!

GOOD LUCK!

 

转载于:https://www.cnblogs.com/mythings/p/5871246.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值