1

我在使用 postMessage 时遇到了问题,即使在阅读了在线和本网站上的其他帖子后也是如此。

我有一个使用 var abc_iframe = document.createElement('iframe') 生成的 iframe。据我了解,我想在此附加一个事件侦听器以侦听 iframe 中的消息。我试过了:

1. abc_iframe.addEventListener("message", function(e){ console.log(e.data); }, false);
2. document.frames['id_iframe'].addEventListener("message", function(e){ console.log(e.data); }, false); 
(id_iframe right here being the id of the iframe)
3. WinJS.Application.addEventListener("message", function(e){ console.log(e.data); }, false);

这些都没有奏效。我正在使用 iframe 从 iframe 中发送 postMessage

1. parent.postMessage("message", "ms-appx://" + document.location.host);
2. window.parent.postMessage("message", "ms-appx://" + document.location.host);

iframe 内容托管在另一个域(不是本地)上。

4

1 回答 1

1

您需要附加到窗口对象,而不是 iframe,才能从 iframe 接收消息。

window.addEventListener(function(e) {}));

在您发送的消息中,您应该包含让父级识别发送消息的 iframe 的信息,因为来自所有窗口的所有消息都将由此事件处理程序处理。

另请注意, addEventListener 仅适用于某些浏览器。较旧的 IE 版本使用 attachEvent。

于 2012-12-17T02:28:28.170 回答