以下是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函数?
帮助将不胜感激。
答案 0 :(得分:7)
这很容易。您需要“导出”用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;&LT;你必须这样做
然后,您可以从手写的JavaScript代码中调用Callee()
。
按钮的代码:
<input type='button' value='Call' onclick='$wnd.Callee();'>
答案 1 :(得分:1)
对于chrome,如果我将onclick ='$ wnd.Callee()更改为onclick ='window.Callee(),则上述解决方案有效。 Chrome的浏览器控制台告诉我们$ wnd未定义。 $ wnd是如何在JSNI中访问浏览器的窗口对象。
抱歉,我不能将此作为评论(不够点)
答案 2 :(得分:0)
请参阅here:
Test_GoogleWeb_JSNI.Callee()
为static
。