1

我正在尝试进行与此 JavaScript 片段等效的 JSNI 调用:

jQuery(function($) {
    $('#target').Jcrop();
});

我相信我已经正确地导入了库,但我似乎无法正确地从 JSNI 调用这个函数。使用以下方法时:

public static final native void initializeJCrop() /*-{
    $wnd.jQuery(function($) {
        $('#target').Jcrop();
    });
}-*/;

抛出以下异常:

引起:com.google.gwt.core.client.JavaScriptException: (TypeError): $("#target").Jcrop 不是函数

我该如何解决这个问题?

4

1 回答 1

-2

使用 JSNI 调用外部函数的语法与简单的 JavaScript 有点不同。

您必须提供完整的包/类参考以及被调用函数的参数类型/类(由于您的没有任何参数,您不必担心)尝试更改调用以包含JCrop 所在的被定义为。假设定义 JCrop 的类的位置是“api.jcrop”

那么你的电话必须是

    @api.jcrop::JCrop()() 

而不是 JCrop()

当然,包名称是假设的,您必须检查包含定义的类的正确位置。

符号@ 是必需的。jcrop 是包含定义的类,而 JCrop() 是函数本身。

JCrop 之后的第一个括号表示函数的参数类型,而第二个括号提供传递参数的值。正如我所说,在你的情况下两者都是空的。

如果您有兴趣,可以在此处阅读有关参数的更多信息

希望这能解决你的问题

于 2012-05-15T14:35:57.210 回答