如何使用GWT的JSNI将函数指针传递给javascript函数?

时间:2011-01-30 21:42:03

标签: javascript gwt jsni

我之前使用过JSNI,但我从来没有使用它将函数指针作为参数传递,我不知道如何做到这一点。任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:5)

您应该能够传递代表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);
}-*/

不可否认,我没有尝试过此代码,但我相信它应该可行。

答案 1 :(得分:2)

与sinelaw的答案一样,这是一种获得回调的方法。

static final native JavaScriptObject createFunction(final Runnable runnable)
/*-{
    return function() {
        runnable.@java.lang.Runnable::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;
}-*/

希望这有帮助!