js广播事件,两个独立系统之间页面嵌套

文章讲述了在进行跨系统友商联调时,如何通过JavaScript的postMessage和自定义事件实现提交成功后关闭双方弹出框的广播机制,以及相关的代码示例。
摘要由CSDN通过智能技术生成

        与友商联调时发现,对方在页面中嵌入我方的一个表单提交模块,在用户点击我方的保存按钮 提交成功后,需要同时关闭双方的弹出框。由于是处于两个系统,且没有在此提交后做相应的回调接口,因此与对方商讨过后 决定采用js 发送广播的方式 ,来通知对方 用户的保存操作。

        在JavaScript中,没有内置的“广播事件”的概念,但是可以通过自定义事件和监听器来模拟广播效果。

具体代码如下

//发送广播方法
function sendMessageToParent(cMessage){
    window.parent.postMessage(cMessage,'*');
    if (typeof (containerMsger)== "object" && typeof (containerMsger.sendMsgTocontainer)== "function") {
        ContainerMsger.sendMsgToContainer(JSON.stringify(cMessage));
    }
}

//此处为保存成功之后进行调用
    WebApi.ajax({
            url: WebApi.ctxPath + 'xxxxxxxx',
            type: 'POST',
            data: $('#addForm').serialize(),
            dataType: 'JSON',
            async: false
        }, function (data) {
            if (data.status === 1) {
                WebApi.message("信息上报成功");
                var para = {
                    type:"dwhd",
                    value:"1"
                };
                sendMessageToParent(para);
                WebApi.closeLoader(idx);
            } else {
                WebApi.message(data.message);
                WebApi.closeLoader(idx);
            }
        },
        function () {
            WebApi.message('服务器异常,请稍后再试!');
            WebApi.closeLoader(idx);
        });

// 对方广播监听
window.addEventListener('message', function (event) {
            console.log(event.data);
            if (event.data.type == "dwhd") {
                if (event.data.value == "1") {
                    Cabin.getThisNModal().close({success: true});
                }
            }
        }, false);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Turing_wzh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值