Javascript postMessage跨域通信示例

Javascript postMessage跨域通信示例,javascript,iframe,cross-domain,postmessage,Javascript,Iframe,Cross Domain,Postmessage,我试图从一个显示在iframe中的网站与包含带有postMessage的iframe的父页面进行通信。这两个页面需要来自不同的域。我已经使用jsfiddle和codepen(改编自此jsfiddle:)构建了一个快速示例,但是消息似乎没有到达。我猜当我试图调用postMessage时,我没有正确选择父级-有人能给我一个提示吗 这是我的密码笔: 代码输入: 代码输入: 功能接收器(消息){ console.log(message);//即使将消息添加到innerHtml中,也不会在控制台中显示此

我试图从一个显示在iframe中的网站与包含带有postMessage的iframe的父页面进行通信。这两个页面需要来自不同的域。我已经使用jsfiddle和codepen(改编自此jsfiddle:)构建了一个快速示例,但是消息似乎没有到达。我猜当我试图调用postMessage时,我没有正确选择父级-有人能给我一个提示吗

这是我的密码笔:

代码输入:

代码输入:

功能接收器(消息){
console.log(message);//即使将消息添加到innerHtml中,也不会在控制台中显示此消息
//获取消息容器html元素(在本例中为messages div)
var messagecontainer=document.getElementById('messages');
var信任域http://fiddle.jshell.net';
//获取消息接收的时间
var currenttime=新日期();
//将时间格式化为用户可读的格式
var formattedtime=currenttime.getHours()+':'+currenttime.getMinutes()+':'+currenttime.getSeconds();
//检查消息事件的origin属性,以确保消息来自同一域)
如果(message.origin=='http://fiddle.jshell.net') {
if(message.data[0]!=“嵌入”){
var msgcontent=message.data;
messagecontainer.innerHTML+='MessageReceived@'+formattedtime+':'+msgcontent+'
'; } } } //将事件侦听器添加到窗口对象以捕获任何消息事件 window.addEventListener('message',receiver,false);
    //Get the users message from the message input box
    var message = document.getElementById("message").value;

    //Check that the message is not blank
    if (message !== "") {
    parent.postMessage(message, '*');
    }
    else {
         alert("You cannot send a blank message!");   
    }
}
function receiver(message) {
    console.log(message); // This never appears in the console, even when a message is added to innerHtml
    //get the message container html element (in this case, the messages div)
    var messagecontainer = document.getElementById('messages');
    var trusteddomain = 'http://fiddle.jshell.net';

    //Get the time of message receipt
    var currenttime = new Date();
    //format the time into a user readable format
    var formattedtime = currenttime.getHours() + ':' + currenttime.getMinutes() + ':' + currenttime.getSeconds();

    //inspect the origin property of the message event to ensure the message originates from the same domain)
    if (message.origin == 'http://fiddle.jshell.net') {
        if (message.data[0] != 'embed') {
            var msgcontent = message.data;
            messagecontainer.innerHTML += 'message received @ ' + formattedtime + ': ' + msgcontent + '<br />';
        }
    }
}

//Add an event listener to the window object to catch any message events
window.addEventListener('message', receiver, false);