5

html の発信者ボタンのサンプルは次のとおりです。

<input type='button' value='Call' onclick='Test()'>

そして、ここに私が試したいくつかの機能がありますが、それらは機能しませんでした:

<script type="text/javascript">
    function Test() {
        com.tests.client.Test_GoogleWeb_JSNI::Callee()();
    }
</script>

しかし、Callee() を呼び出すことはできません。どうすればこれを達成できますか?つまり、JavaScript から JSNI 関数を呼び出す方法を教えてください。

助けていただければ幸いです。

4

3 に答える 3

8

それは非常に簡単です。GWT (または別の JSNI) 関数で記述された関数を「エクスポート」する必要があります。

関連ドキュメントは次のとおりです: http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html#calling

だからあなたの場合:

GWT コードで:

public static void Caller() /*-{ 
   ... 
}-*/

public static native void exportStaticMethod() /*-{
   $wnd.Callee =
      $entry(@com.tests.client.Test_GoogleWeb_JSNI::Callee());
}-*/;

次にexportStaticMethod()、onModuleLoad でもどこかを呼び出します。<< あなたはこれをしなければなりません

Callee()次に、手書きの JavaScript コードから呼び出すことができます。

ボタンのコード:

<input type='button' value='Call' onclick='$wnd.Callee();'>
于 2012-02-14T13:19:31.143 に答える
1

クロムの場合、onclick='$wnd.Callee() を onclick='window.Callee() に変更すると、上記のソリューションが機能します。Chrome のブラウザー コンソールは、$wnd が定義されていないことを示しています。$wnd は、JSNI でブラウザーのウィンドウ オブジェクトにアクセスする方法です。

申し訳ありませんが、これをコメントとして残すことができませんでした(ポイントが不足しています)

于 2014-12-18T15:48:45.207 に答える
0

ここを参照してください:

  1. であることを確認してTest_GoogleWeb_JSNI.Callee()くださいstatic
  2. Callee() 関数をウィンドウ オブジェクトに割り当てます。
于 2012-02-14T13:14:05.157 に答える