13

"postMessage" 是一个 HTML5 API,它在包括 IE8/9 在内的所有主流浏览器中都可用。我想做的是从页面创建一个弹出窗口,并能够使用“postMessage”与弹出窗口对话。这适用于除 IE8/9 之外的所有浏览器。失望的!

看起来 IE8/9 只允许 iframe 之间的通信,而不是两个窗口之间的通信,即使窗口在同一层次结构内。

4

2 回答 2

44

我发现.postMessage()在 IE9 中是不可靠的,除非我使用Strings.

我的解决方法是在另一端的函数中简单地调用.postMessage(JSON.stringify({object: 'data'}))和使用。JSON.parse()onMessage()

于 2013-08-08T07:33:04.877 回答
14

.postMessage方法有效,您只需要从 IE8 及更高版本了解它是如何工作的不幸的是,对于 IE8 和 IE9,它不会做你想要的(尽管它在 IE10 中会做)。虽然您可以在 IE8/9 中的帧之间发送消息,但您不能将消息发送到单独的窗口。

有一种解决方法在某些情况下有效。Martin Beeby 在他关于这个问题的博客文章的最后一段中讨论了它:PostMessage Popups 和 IE

有关这方面的更多信息以及其他一些注意事项,请参阅 Eric Lawrence在 MSDN 上的帖子

于 2012-12-12T00:39:29.700 回答