2016-10-02 69 views
3

我想从一个子文档(一个iframe)发回一个简单的消息到它的直接父母使用window.postMessage API。window.postMessage不工作从iframe到父文档

在父文件我有以下几点:

window.addEventListener("message", receiveMessage, true); 
var receiveMessage = function(event) { 
    console.log("Recieved event " + JSON.stringify(event)); 
} 

然后,在iframe我有以下几点:

window.parent.postMessage('message', '*'); 

基于一切我读过,这应该和我日志消息应写入控制台。除非它不工作。

我知道使用*作为targetOrigin并不总是安全的,但在这一点上,我只是想整理链接。

任何想法或任何明显的我失踪?

+0

什么是“不工作”,在这种情况下呢?是否有任何错误消息? – Frxstrem

+0

iframe元素中是否有'message'事件处理程序?在'父'窗口调用postMessage()吗? – guest271314

+0

如果你真的写了你的问题,当你将它作为事件处理程序附加时,receiveMessage仍然是未定义的。事先声明它或使用'function receiveMessage(){}'符号,以便它在脚本的顶部定义。 – Kaiido

回答

0

确保您的回调函数receiveMessage()宣称为之前将其传递给addEventListener方法。

下面是修改后的父脚本:

var receiveMessage = function(event) { 
    console.log("Recieved event " + JSON.stringify(event)); 
} 
window.addEventListener("message", receiveMessage, true);