“postMessage”是一个HTML5 API,它适用于所有主流浏览器,包括IE8 / 9。我想要做的是从页面创建一个弹出窗口,并能够使用“postMessage”与弹出窗口对话。这适用于IE8 / 9以外的所有浏览器。失望!
看起来IE8 / 9只允许iframe之间的通信,但不允许在两个窗口之间进行通信,甚至窗口都在同一层次结构中。
答案 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。