2011-01-13 17 views
1

gwtモジュールがロードされているiframeの親からGWT静的メソッドを呼び出す方法を知りたいと思います。簡単な例としてiframeの親からgwt staticメソッドを呼び出す

は、私は、次のGWTクラスがあるとします。

public class Simple { 
    public static void showWindow() { 
     Window.alert("Hello from the iframe"); 
    } 
} 

私は上記の機能を実行することができます「iFrameHost.html」と呼ばれるHTMLホストページを作成します。その後、別のページ上の無関係なGWTモジュールに私が呼ん:

Frame iFrame = new Frame("iFrameHost.html"); 
RootPanel.get().add(iFrame); 

どのように私は今、親ページからshowWindow()メソッドを呼び出していますか? iframe内に

public static final native void setWindowFunction() /*-{ 
    $wnd.myFunction = [email protected]::showWindow(); 
}-*/; 

、ネイティブJavaScriptメソッドまたは純粋なJavaScriptで、次のいずれか:単純なクラスで

答えて

2

これは、ジプシー・キングスの答えに基づいていますクラスは次のようになります。

public class Simple { 
    public static void showWindow() { 
     Window.alert("Hello from the iframe"); 
    } 
    public static final native void setWindowFunction() /*-{ 
     $wnd.jsniShowWindow = [email protected]::showWindow(); 
    }-*/; 
} 
はIFrameのIDを設定し、次のメソッドを使用します:あなたはiFrameのページがsetWindowFunction(と呼ばれていることを確かめる必要があるでしょう

private native void callShowWindow() /*-{ 
     $doc.getElementById("iFrameID").contentWindow.jsniShowWindow(); 
}-*/; 

を)が、後に続いて、親HTMLページから単純なクラスを呼び出す

親のhtmlページからcallShowWindow()を呼び出すことができます。

+0

がhttp://code.google.com/intl/de-AT/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html#callingを参照してくださいあなたは$エントリ(...)を使用して、関数の参照をラップする必要がありますおそらく誰もあなたの質問を見ないので、古い投稿を編集して質問します。この回答へのリンクを含む個別の質問を作成し、なぜFirefoxでは動作するのですが、Chromeでは動作しないのか尋ねます。 –

+0

@Malliは聞かないでください – Pshemo

0

シンプル

window.parent.myFunction(); 
+0

お返事ありがとうございます。私は何をしたいのですか? iFrameの親ページのメソッドではなく、親ページからiFrameのメソッドを呼び出す必要があります。私は自分のコードをどのように使用しようとしたかを示すために質問を更新しましたが、残念ながら私はJavaScriptでかなり弱く、動作させることができません。 –

+0

私はあなたの答えを適合させました。 あなたはインラインフレームにIDを与える親ページから関数を呼び出し、次に呼び出したい場合:。 $ doc.getElementById(「iFrameID」)contentWindow.myFunction(); –

+0

@リチャードあなたの最終的な解決策を使用した回答を書き留めておき、それを受け入れることができますか? – marcog

関連する問題