繁体   English   中英

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

[英]how to call JSNI function from Javascript function?

这是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中也是如此。 “你必须这样做

然后你可以用手写的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() - 函数分配给window对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM