使用javascript中的postMessage函数将消息从一个域发送到另一个域

时间:2014-11-04 17:32:18

标签: javascript postmessage

如果我在一个浏览器中打开一个域chat.example.com,在其他浏览器上打开www.example.com(跨域)。是否可以从www.abc.com发送消息到chat.abc.com?

我试过以下:

接收方的脚本即www.example.com接收消息如下:

jqcc(document).ready(function(){

var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";

// Listen to message from child window
eventer(messageEvent,function(e) {
if(e.data.indexOf("He") >= -1){
    console.log("Message Received:"+e.data);
}

},false);

});

当我尝试从http://chat.example.com发送消息时

window.postMessage( “你好”, “http://www.example.com”);

我在浏览器的控制台中什么都没有。请帮忙

1 个答案:

答案 0 :(得分:2)

不,它不会工作。

postMessage api仅与iframe一起使用。您要执行的操作是在www.chat.example.com内向www.example.com打开iframe。然后,您可以使用document.getElementById('iframe_pointing_to_chat').contentWindow.postMessage('message', '*')

现在,www.chat.example.com将通过onmessage处理程序接收消息。