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

Rn2*_*2dy 13 html5 internet-explorer

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

看起来IE8/9只允许iframe之间的通信,但不允许在两个窗口之间进行通信,即使窗口在同一层次结构中也是如此.

sim*_*mon 44

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

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

  • 这在IE8和IE9中完美地解决了我的问题.谢谢! (5认同)

Sam*_*son 14

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

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

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