我正在window.opener.postMessage('a=1','*')
,其中当前窗口是通过window.open
打开的。
console.log
的{{1}}会显示正确的窗口,但我看不到消息进入开场白。
我在做window.opener
,其中handleMessage有$(window).on( 'message', handleMessage );
知道它被击中了。我已经多次为跨iframe通信做了这件事,并希望在我的新窗口中实现同样的目的。
答案 0 :(得分:2)
答案 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中的情况就是我所写的。