如何从Javascript函数调用JSNI函数



以下是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函数?

我们将不胜感激。

这很容易。您需要"导出"用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中也是如此<lt;你必须做这个

然后,您可以从手写的javascript代码中调用Callee()

您的按钮代码:

<input type='button' value='Call' onclick='$wnd.Callee();'>

对于chrome,如果我将onclick='$wnd.Callee()更改为onclick=`window.Callee(),则上述解决方案有效。chrome的浏览器控制台告诉我们$wnd未定义$wnd是如何在JSNI中访问浏览器的窗口对象。

很抱歉,我不能把它作为评论(分数不够)

请参阅此处:

  1. 确保Test_GoogleWeb_JSNI.Callee()static
  2. 将Callee()-函数指定给窗口对象

最新更新