在GWT JSNI中调用JCrop

Calling JCrop in GWT JSNI

本文关键字:调用 JCrop JSNI GWT      更新时间:2023-09-26

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

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

我相信我已经正确导入了库,但我似乎无法从 JSNI 调用此函数时获得正确的语法。使用以下方法时:

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

引发以下异常:

原因:com.google.gwt.core.client.JavaScriptException: (类型错误(: $("#target"(。Jcrop不是一个函数

我该如何解决这个问题?

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

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

那么你的电话必须是

    @api.jcrop::JCrop()() 

而不是 JCrop((

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

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

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

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

希望这能解决您的问题