规范说,我应该能够在窗口对象上使用postMessage()。 Mozilla说, ,我也应该能够在open()'d窗口上做到这一点。

但是,我已经采取了Robert Nyman的postMessage示例,并试图使其工作 跨窗口.但是,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(build8250)是否像预期的那样。谢谢你的帮助!

有帮助吗?

解决方案

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

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

在Internet Explorer10中,我收到错误SCRIPT16388:每当我尝试脚本时,操作都会中止-即使我等了10秒。

其他提示

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top