iframe 弹窗跨域问题解决

本文介绍了如何在存在跨域限制的情况下,通过在网站A中设置message监听器并在网站B中使用`postMessage`功能,实现从网站B调用网站A的closeDialog方法。关键步骤包括在A中添加事件监听和在B中发送带有特定消息的数据。
摘要由CSDN通过智能技术生成

一、场景:

网站A(www.wzA.com),网站B(www.wzB.com)。

在网站A中打开一个iframe,iframe 中嵌套的网页B。现在需要点击网站B的按钮,来调用网站A的一个方法closeDialog。如果不存在跨域问题,可以通过top.closeDialog()或者parent.closeDialog(),就能调用到网站A的方法,但是由于浏览器产生了跨域,就会报错,不能直接调用

二、目标

能够在网站B中调用网站A的方法closeDialog()

三、方法,使用postMessage

原理就不多讲了,因为我也不懂。。。。

1.在页面A中创建监听器:

window.addEventListener('message', function (e) {
        if (e.data === 'closeDialogMsg') {
            closeDialog();
        }
    }, false);

2.在页面B中发送消息

//取消按钮
$('#cancel-btn').on('click', function () {
    let targetOriginUrl = "*";
    window.parent.postMessage('closeDialogMsg',targetOriginUrl);
});

注意targetOriginUrl最好是网站A的地址,如果填网站A的地址不能成功,就直接使用"*"吧

这样就基本完成了!

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值