Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html IE8/9 window.postMessage不工作,但为什么?_Html_Internet Explorer - Fatal编程技术网

Html IE8/9 window.postMessage不工作,但为什么?

Html IE8/9 window.postMessage不工作,但为什么?,html,internet-explorer,Html,Internet Explorer,“postMessage”是一个HTML5API,它在包括IE8/9在内的所有主要浏览器中都可用。我试图做的是从一个页面创建一个弹出窗口,并能够使用“postMessage”与弹出窗口对话。这适用于除IE8/9之外的所有浏览器。失望 看起来IE8/9只允许在iFrame之间进行通信,但不允许在两个窗口之间进行通信,即使这些窗口在同一层次结构中。使用.postMessage方法,您只需要了解它在IE8及以上的版本中是如何工作的。不幸的是,对于IE8和IE9来说,它并不能满足您的需求(尽管它在IE1

“postMessage”是一个HTML5API,它在包括IE8/9在内的所有主要浏览器中都可用。我试图做的是从一个页面创建一个弹出窗口,并能够使用“postMessage”与弹出窗口对话。这适用于除IE8/9之外的所有浏览器。失望


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

使用
.postMessage
方法,您只需要了解它在IE8及以上的版本中是如何工作的。不幸的是,对于IE8和IE9来说,它并不能满足您的需求(尽管它在IE10中实现了)。虽然可以在IE8/9中的帧之间发送消息,但不能将消息发送到单独的窗口

在某些情况下,有一种变通方法可以奏效。马丁·比比(Martin Beeby)在他关于这个问题的博客文章的最后一段中对此进行了讨论:


有关这方面的更多信息以及其他一些注意事项,请参阅Eric Lawrence的。

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


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

您能在这里与我们分享您的代码吗?您似乎已经回答了自己的问题,只有帧和iframe。你的问题到底是什么?正如劳伦斯在他的文章更新中所指出的,这在IE11中仍然没有得到解决。这在IE8和IE9中完美地解决了我的问题。谢谢另外,
data
属性在
MessageEvent
对象中是只读的,因此我必须从字符串中附加已解析的对象作为另一个属性,以便以后访问它。我不知道是否有更好的方法来解决这个问题。这个问题也把我逼疯了!非常感谢你的这个好消息。也修复了IE 11中的问题,仍然是必要的。