跨文档消息传送(cross-document messaging),简称XDM,允许来自不同域的页面间传递消息。如 www.test.com 域中的页面与位于内嵌框架中的 c2x.test.com 域中的页面通信。
XDM的核心是 postMessage(dataString, origin),参数:消息字符串,消息接受方所在的域。
 let iframeWindow = document.querySelector("#iframe1").contentWindow;
    let btn = document.querySelector("#btn");
    btn.addEventListener("click",function(e){
        iframeWindow.postMessage("hello XDM","http://www.c2x.test.com");
    },false);
    window.addEventListener("message",function(e){
        console.log(e);
        console.log(e.data);
    },false);
接到XDM消息时, 会触发 window 对象的 message 事件
message 事件对象,包含三个重要信息:
data:消息字符串
origin:发送消息文档所在的域
source:发送消息的文档的window 对象的代理
    window.addEventListener("message",function(e){
        if(e.origin == "http://www.c2x.test.com"){
            console.log(e);
            console.log(e.data);
            document.querySelector("#testDiv").innerHTML = e.data;
            
            e.source.postMessage("received","http://www.test.com"); // 向来源窗口返回消息,可以不用
        }
    },false);
因为跨文档消息传送 只能发送字符串消息,所以想要传递结构化数据,需要用JSON.stringify() 转化,然后接到消息后用JSON.parse()转化回来。
HTML5 中的 跨文档消息传送 postMessage()
原文:https://www.cnblogs.com/zhanglw456/p/10969052.html