3

我正在window.opener.postMessage('a=1','*')通过打开当前窗口的位置进行操作window.open

A console.logofwindow.opener确实显示了正确的窗口,但我没有看到消息进入开启程序。

我正在做$(window).on( 'message', handleMessage );handleMessageconsole.log知道它被击中的地方。我已经为跨 iframe 通信做了几次,并希望为我的新窗口实现同样的目标。

4

2 回答 2

2

caniuse

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

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

于 2013-09-04T20:36:34.917 回答
2

这里的问题是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 中的情况是我写的。

于 2013-09-04T20:53:06.043 回答