从java GWT代码调用.js文件的Javascript函数

从java GWT代码调用.js文件的Javascript函数,java,javascript,gwt,Java,Javascript,Gwt,我在JavaGWT代码中有一个按钮。我在scripts文件夹中有一个javascript文件。我想在点击按钮时访问js文件的功能 那么我如何从JavaGWT代码(按钮的点击事件)调用该方法呢 谁能告诉我访问js文件函数的代码或方式吗 提前谢谢 在.html文件中导入JS库 创建如下方法: public static native void onMyButtonClick() /*-{ myJSfunction(); }-*/; myButton.addClickHandler(new

我在JavaGWT代码中有一个按钮。我在scripts文件夹中有一个javascript文件。我想在点击按钮时访问js文件的功能

那么我如何从JavaGWT代码(按钮的点击事件)调用该方法呢

谁能告诉我访问js文件函数的代码或方式吗

提前谢谢

  • 在.html文件中导入JS库
  • 创建如下方法:

    public static native void onMyButtonClick() /*-{
        myJSfunction();
    }-*/;
    
    myButton.addClickHandler(new ClickHandler() {
    
        @Override
        public void onClick(ClickEvent event)
        {
            onMyButtonClick();
        } 
    
    });
    
  • 按如下方式绑定按钮:

    public static native void onMyButtonClick() /*-{
        myJSfunction();
    }-*/;
    
    myButton.addClickHandler(new ClickHandler() {
    
        @Override
        public void onClick(ClickEvent event)
        {
            onMyButtonClick();
        } 
    
    });
    
  • 完成了

  • 只需确保在生成GWT javascript之前加载了包含函数的javascript


    欢迎光临

    因为您的代码不应该依赖于gwt链接器(以及它如何加载代码),所以您需要在调用之前添加正确的窗口对象。REPA没有考虑到这一点。因此,它实际上需要:

    public static native void onMyButtonClick() /*-{
        $wnd.myJSfunction();
    }-*/;
    

    这对某些链接器不起作用,因为全局窗口对象(在其中查找myJSfunction)可能不是同一个窗口对象。(gwt可以在隐藏的iframe中加载代码…)在我看来,您至少使用标准链接器选择了一个不起作用的答案,Daniels one更好。如果您想知道此代码中的异常注释,或者为什么需要
    $wnd
    ,请查看gwt的更多详细信息。