如何从Javascript函数调用JSNI函数?

5 javascript gwt jsni

这是html中的调用者按钮示例:

<input type='button' value='Call' onclick='Test()'>
Run Code Online (Sandbox Code Playgroud)

这里有一些我尝试过但没有用过的功能:

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

但我们无法调用Callee().​​我们如何实现这一点?我的意思是我们如何从javascript调用JSNI函数?

帮助将不胜感激.

Str*_*lok 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());
}-*/;
Run Code Online (Sandbox Code Playgroud)

然后你exportStaticMethod()在某个地方打电话,甚至在你的onModuleLoad上."你必须这样做

然后你可以用Callee()手写的javascript代码打电话.

您的按钮代码:

<input type='button' value='Call' onclick='$wnd.Callee();'>
Run Code Online (Sandbox Code Playgroud)