4

规范说,我应该能够在窗口对象上使用 postMessage() 。Mozilla 说,我应该也可以在 open() 的窗口上执行此操作。

但是,我采用了 Robert Nyman 的 postMessage 示例并尝试让它跨 windows工作。但是,IE10 和 Chrome 似乎都没有为新打开的窗口提供 postMessage 功能。

var target = … // original declaration
popoutbutton.onclick = function(evt) {
    realWin = window.open(iframeWin.frameElement.src, "window1", "width=600,height=400,status=yes,scrollbars=no,resizable=yes");
    target = realWin;
    target.focus();
};

// …snip…

target.postMessage(myMessage.value, expectorigin); // <-- fails because target.postMessage() is undefined

我错过了什么还是这个功能根本不存在?

- 下面更新 -

开发人员预览似乎根本没有这样做。我再次尝试使用消费者预览版。IE10 (build 8250) 和预期的一样。谢谢你的帮助!

4

1 回答 1

0

我可以让它在 Chrome 15.0.874.121 中工作,尽管在您的示例中target.postMessage,您在打开窗口之前调用了它,尽管您已经跳过了最初设置的任何代码target

您可能还会遇到postMessage在新窗口中的内容加载(或至少加载到足以附加事件侦听器)之前调用的问题。因此,当实际上没有任何东西在听时,可以触发该事件。在这种情况下,您可能需要添加等待以确保加载新打开的窗口。

在 Internet Explorer 10 中,我收到错误 SCRIPT16388: Operation Aborted 每当我尝试脚本时 - 即使我等待 10 秒。

于 2012-03-14T17:01:09.950 回答