以下是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中访问浏览器的窗口对象。
很抱歉,我不能把它作为评论(分数不够)
请参阅此处:
- 确保
Test_GoogleWeb_JSNI.Callee()
为static
- 将Callee()-函数指定给窗口对象