3

window.opener.postMessage('a=1','*')介して現在のウィンドウが開かれた場所を実行していますwindow.open

console.logof にはwindow.opener正しいウィンドウが表示されますが、オープナーにメッセージが表示されません。

私は$(window).on( 'message', handleMessage );handleMessageconsole.logがヒットしたことを知るためにどこにいるのかをやっています。私はクロス iframe 通信のためにこれを数回行いましたが、新しいウィンドウでも同じことを達成したいと考えていました。

4

2 に答える 2

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 に答える
2

カニウスより:

IE8-9 での部分的なサポートは、フレーム/iframe でのみ動作することを指します (他のタブ/ウィンドウでは動作しません)。

はい、できますが、ブラウザのサポートはより制限されています。

于 2013-09-04T20:36:34.917 に答える