3

html5のpostMessageを使用して、あるiframeから別のiframeに通信することの喜びを見つけました。

しかし、私が抱えている問題は、iframeを(外部ドメインで)ロードするGWTアプリケーションを実行していることです。その外部ドメインから、GWTアプリケーションにメッセージを投稿したいと思います。素朴に私は最初に試しました:

parent.postMessage('hello', '*');

GWTアプリケーションでメッセージイベントをリッスンしながら、外部スクリプトから。GWTのjavascriptはiframeで実行されるため、これは機能しません。

私がそれを機能させる方法は、次のことです。

document.getElementById(myGwtModuleName).postMessage('hello', '*');

それが機能しているのは素晴らしいことですが、Gwtのモジュール名を変更することにした場合はどうなりますか?プロセス全体が中断し、1年以内に、理由を理解するために多くの頭を悩ませる必要があります。

GWTアプリケーションにメッセージを投稿するためのより良い方法はありますか?または、実行時にGwtのモジュール名を把握するにはどうすればよいですか?その場合、パラメータとしてiframeに渡すことができます。

助けてくれてありがとう!

4

2 に答える 2

5

同じ問題があり、しばらく時間がかかりましたが、これを機能させるには、これを呼び出す必要があります:)

ここに解決策があります

    public final native void doPost() /*-{
    $wnd.parent.postMessage("Hello parent from your GWT iFrame!", '*');
}-*/;

よろしく、ステファン

于 2012-01-17T13:49:47.140 に答える
0

現在のウィンドウ (GWT スクリプトが含まれるウィンドウなど) にリスナーを追加するにはどうすればよいですか。リスナーのターゲットとして、$doc または $wnd 変数を使用する必要があります。$doc 変数は常に、GWT アプリケーションのブートストラップ スクリプトを含むドキュメントへの参照です。

于 2011-09-07T17:43:38.220 に答える