如何从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 函数?
如有帮助,将不胜感激。
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这很容易。您需要“导出”用 GWT 编写的函数(或者它可以是另一个 JSNI)函数。
以下是相关文档:http://code.google.com/webtoolkit /doc/latest/DevGuideCodingBasicsJSNI.html#calling
因此,在您的情况下:
在您的 GWT 代码中:
然后您在某处调用
exportStaticMethod()
,即使在你的 onModuleLoad 中。 <<您必须执行此操作然后您可以从手写的 javascript 代码中调用
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:
Then you call
exportStaticMethod()
somewhere, even in your onModuleLoad. << YOU MUST DO THISThen you can call
Callee()
from your handwritten javascript code.Your code for the button:
对于 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)
请参阅此处:
Test_GoogleWeb_JSNI.Callee( )
是静态
。See here:
Test_GoogleWeb_JSNI.Callee()
isstatic
.