IE8 / 9 window.postMessage无法正常工作,但为什么呢?

时间:2012-12-11 23:50:16

标签: html5 internet-explorer

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

看起来IE8 / 9只允许iframe之间的通信,但不允许在两个窗口之间进行通信,甚至窗口都在同一层次结构中。

2 个答案:

答案 0 :(得分:43)

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

我的解决方法是简单地拨打.postMessage(JSON.stringify({object: 'data'}))并在另一端的JSON.parse()功能中使用onMessage()

答案 1 :(得分:14)

.postMessage方法有效,你只需要了解 它如何从IE8开始运行。不幸的是,对于IE8和IE9,它不会做你想要的(虽然它在IE10中)。虽然您可以在IE8 / 9中的帧之间发送消息,但您无法将消息发送到单独的窗口。

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

有关此问题的更多信息以及其他一些注意事项,请参阅Eric Lawrence的post on MSDN