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

发布于 2025-01-05 19:56:42 字数 394 浏览 1 评论 0原文

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

如有帮助,将不胜感激。

Here is caller button samples in html:

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

And here are some functions I tried and which were not worked:

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

But we are not able to call Callee().How we can achieve this?I mean how we can invoke JSNI function from javascript?

Help would be appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

许仙没带伞 2025-01-12 19:56:42

这很容易。您需要“导出”用 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();'>

It's very easy. You need to "export" your function written in GWT (or it can be another JSNI) function.

Here is the relevant documentation: http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html#calling

So in your case:

In your GWT code:

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

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

Then you call exportStaticMethod() somewhere, even in your onModuleLoad. << YOU MUST DO THIS

Then you can call Callee() from your handwritten javascript code.

Your code for the button:

<input type='button' value='Call' onclick='$wnd.Callee();'>
爱的那么颓废 2025-01-12 19:56:42

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

抱歉,我不能仅将此作为评论(积分不够)

For chrome, the above solution works if I change onclick='$wnd.Callee() to onclick='window.Callee(). Chrome's browser console tells us $wnd is not defined. $wnd is how to access the browser's window object in JSNI.

Sorry I couldn't just leave this as a comment (not enough points)

瑕疵 2025-01-12 19:56:42

请参阅此处

  1. 确保 Test_GoogleWeb_JSNI.Callee( )静态
  2. 将 Callee() 函数分配给窗口对象。

See here:

  1. Make sure that Test_GoogleWeb_JSNI.Callee() is static.
  2. Assign the Callee()-function to the window object.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文