"postMessage" 是一个 HTML5 API,它在包括 IE8/9 在内的所有主流浏览器中都可用。我想做的是从页面创建一个弹出窗口,并能够使用“postMessage”与弹出窗口对话。这适用于除 IE8/9 之外的所有浏览器。失望的!
看起来 IE8/9 只允许 iframe 之间的通信,而不是两个窗口之间的通信,即使窗口在同一层次结构内。
"postMessage" 是一个 HTML5 API,它在包括 IE8/9 在内的所有主流浏览器中都可用。我想做的是从页面创建一个弹出窗口,并能够使用“postMessage”与弹出窗口对话。这适用于除 IE8/9 之外的所有浏览器。失望的!
看起来 IE8/9 只允许 iframe 之间的通信,而不是两个窗口之间的通信,即使窗口在同一层次结构内。
我发现.postMessage()
在 IE9 中是不可靠的,除非我使用String
s.
我的解决方法是在另一端的函数中简单地调用.postMessage(JSON.stringify({object: 'data'}))
和使用。JSON.parse()
onMessage()
该.postMessage
方法有效,您只需要从 IE8 及更高版本了解它是如何工作的。不幸的是,对于 IE8 和 IE9,它不会做你想要的(尽管它在 IE10 中会做)。虽然您可以在 IE8/9 中的帧之间发送消息,但您不能将消息发送到单独的窗口。
有一种解决方法在某些情况下有效。Martin Beeby 在他关于这个问题的博客文章的最后一段中讨论了它:PostMessage Popups 和 IE。
有关这方面的更多信息以及其他一些注意事项,请参阅 Eric Lawrence在 MSDN 上的帖子。