3
我以前使用过JSNI,但我从来没有必要传递一个函数指针作为使用它的参数,我不知道如何做到这一点。任何帮助表示赞赏!如何使用GWT的JSNI将函数指针传递给JavaScript函数?
我以前使用过JSNI,但我从来没有必要传递一个函数指针作为使用它的参数,我不知道如何做到这一点。任何帮助表示赞赏!如何使用GWT的JSNI将函数指针传递给JavaScript函数?
您应该能够传递代表JavaScript函数对象的JavaScriptObject。不过,我认为你不能对Java功能做任何事情。因此,举例来说,您可以:
final native JavaScriptObjet myFuncCreator() /*-{
return function (x, y) { return y - x; };
}-*/
final native int myFuncUser(JavaScriptObject funcObj, int a, int b) /*-{
return funcObj(a,b);
}-*/
无可否认,我没有尝试此代码,但我相信它应该可以工作。
与sinelaw的回答一样,这里有一个获得回调的方法。
static final native JavaScriptObject createFunction(final Runnable runnable)
/*-{
return function() {
[email protected]::run()();
}
}-*/
static final void registerOnClickCallback(Element element, final Runnable runnable) {
JavaScriptObject callback = createFunction(runnable);
_registerOnClickCallback(element, callback);
}
static final native void _registerOnClickCallback(Element element, JavaScriptObject callback)
/*-{
element.onclick = callback;
}-*/
希望这有助于!