IE8 / 9 window.postMessage不起作用,但为什么



"postMessage"是一个HTML5 API,它可用于所有主流浏览器,包括IE8/9。我正在尝试做的是从页面创建一个弹出窗口,并能够使用"postMessage"与弹出窗谈。这适用于除IE8/9以外的所有浏览器。失望!

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

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

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

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

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

有关此内容的详细信息以及其他一些注意事项,请参阅 Eric Lawrence 在 MSDN 上的帖子。

最新更新