我可以将消息发布到window.opener

时间:2013-09-04 20:27:26

标签: javascript

我正在window.opener.postMessage('a=1','*'),其中当前窗口是通过window.open打开的。

console.log的{​​{1}}会显示正确的窗口,但我看不到消息进入开场白。

我在做window.opener,其中handleMessage有$(window).on( 'message', handleMessage );知道它被击中了。我已经多次为跨iframe通信做了这件事,并希望在我的新窗口中实现同样的目的。

2 个答案:

答案 0 :(得分:2)

来自caniuse

  

IE8-9中的部分支持仅指在框架/ iframe(不是其他标签/窗口)中工作。

是的,你可以,但浏览器支持更有限。

答案 1 :(得分:1)

这里的问题是jQuery事件处理程序。 postMessage原生地将像这样工作

function handleMessage( evt ) {
  // evt.data will be whatever was posted
}

window.addEventListener( "message", handleMessage, false );

jQuery这样做:

function handleMessage( evt ) {
  // evt.data will be from jQuery where it populates from an argument in .trigger
  // evt.originalEvent.data is from the postMessage
}
$(window).on( 'message', handleMessage );

浏览器的兼容性也应该从之前的答案(我正在推荐)中注明,但是Firefox / Chrome中的情况就是我所写的。