HTML5是否支持跨窗口消息传递?

时间:2012-03-14 14:18:25

标签: javascript html5 internet-explorer-10

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

但是,我采用了Robert Nyman的postMessage示例并尝试使其工作across 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)就像预期的那样。谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

有一种比postMessage更好的方法,请看:

http://carlosaguayo.posterous.com/html5-localstorage-events-cross-window-messag

答案 1 :(得分:0)

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

您可能还遇到了在加载新窗口中的内容之前调用postMessage的问题(或者至少加载了足以使事件侦听器附加的事件)。因此,当没有任何实际收听时,事件可能会被触发。您可能需要在此方案中添加等待以确保加载新打开的窗口。

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

相关问题