Reputation:
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.
Upvotes: 5
Views: 3383
Reputation: 193
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)
Upvotes: 1
Reputation: 51451
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();'>
Upvotes: 8