网站页面跨域调用

// 跨域通信,供父类调用
window.addEventListener("message",function(obj){
    var data = obj.data;
    var action = data.action;
    var data = data.data;
    if(action=='showPointByCode' ){
        if(typeof(showPointByCode)=='function'){
            showPointByCode(null,data.type,data.point_code);
        }
    }
});

// 下发任务事件
function sendTask(dom){
    var name = $(dom).attr("data-name");
    var code = $(dom).attr("data-code");
    var data = {"code": code,"name": encodeURIComponent(name),"token":token};
    var message = {'data': data,action: 'sendTaskFromMap'};
    var targetWindow= window.parent; // 注意此处
    // document.referrer 就可以拿到父页面的IP,端口信息
   targetWindow.postMessage(message,"http://接收方IP:端口");
}

如果需要从其它项目接收信息,需要添加window.addEventListener注册监听接收

如果需要将项目发送给其它项目,需要使用postMessage进行发送,注意发送的对象,如果发给自己的父页面,使用window.parent,如果发送给自己的子页面iframe,则document.getElementById('myIFrame').contentWindow

确保你使用的是iframe的contentWindow属性,而不是节点对象。

 对addEventListener和postMessage的使用参考:

https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage

https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener

posted @ 2020-12-22 15:58  理舞  阅读(155)  评论(0编辑  收藏  举报