3

ブックマークレットのサインイン フローを作成していますが、リダイレクト フローが発生する可能性があるため、リダイレクト フローの実行を避けたいと考えています。その結果、同じドメインのタブまたはポップアップと、新しいタブまたはポップアップで window.opener として機能する内部 iFrame との間で通信する方法を探しています。

他のブラウザでは window.opener.postMessage でこれを実現できますが、IE8+ ではこれはウィンドウ間では許可されておらず、iFrame 間でのみ許可されているため、もちろん通常の方法では、IE は従うことができないため、特別な基準で処理する必要があります。標準または期待される動作。

他のいくつかの試みで、さまざまなアプローチを試しましたが、まだeasyXDMを試すかもしれませんが、別のライブラリをブックマークレットに含めるよりも軽量のコードを使用したいと考えていました.Googleのクロージャーコンプレッサー.

私は試しました:
window.opener.postMessage()- IE8 ではタブ間で動作しません

window.opener.location.href- 確実に動作しない

window.opener.someFunction()- すべての機能で動作しませんか? なぜ?

今ちょっとうまくいっているのはlocalStorage.authToken、子ウィンドウ/タブで を設定してから、親/オープナーで
setInterval(function(){checkToken(localStorate.authToken)},3000);

更新
これを行うことで合理的な解決策を見つけました
http://www.sfpeter.com/2008/03/communication-between-browser-windows-with-jquery-my-new-plugin/

SFPeter からのこのアプローチは、各ページに小さな隠しフォームを設定し、それぞれにイベント メッセージを使用します。同じドメイン リクエストに対して機能し、たまたま IE8+ のウィンドウとタブの間で機能します。パスの一部として body でクリック イベントを発行しているように見えますが、これは状況によっては無視する必要があるかもしれません。

4

0 に答える 0