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

Posted

技术标签:

【中文标题】从 java GWT 代码调用 .js 文件的 Javascript 函数【英文标题】:Calling Javascript function of .js file from java GWT code 【发布时间】:2012-08-12 18:16:04 【问题描述】:

我在 Java GWT 代码中有一个按钮。我在脚本文件夹中有一个 javascript 文件。我想在按钮单击时访问该 js 文件的功能。

那么我怎样才能从 Java GWT 代码(按钮的点击事件)中调用该方法..?

谁能告诉我访问js文件功能的代码或方法。

提前致谢。

【问题讨论】:

IMO 您至少使用标准链接器选择了一个无效的答案,丹尼尔斯一个更好。 【参考方案1】:
    在您的 .html 文件中导入 JS 库。

    创建一个这样的方法:

    public static native void onMyButtonClick() /*-
        myJSfunction();
    -*/;
    

    像这样绑定你的按钮:

    myButton.addClickHandler(new ClickHandler() 
    
        @Override
        public void onClick(ClickEvent event)
        
            onMyButtonClick();
         
    
    );
    

    完成!

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

欢迎您!

【讨论】:

这不适用于某些链接器,因为全局窗口对象(您在其中查找 myJSfunction)可能不是同一个窗口对象。 (gwt 可以在隐藏的 iframe 中加载代码...)【参考方案2】:

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

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

【讨论】:

如果您想知道这段代码中的异常注释,或者为什么需要 $wnd,请查看 GWT 的 JavaScript Native Interface (JSNI) docs 了解更多详细信息。

以上是关于从 java GWT 代码调用 .js 文件的 Javascript 函数的主要内容,如果未能解决你的问题,请参考以下文章

直接从 Java 调用 GWT RPC 服务

从 GWT 调用 servlet 并使用 servlet 生成的 post 数据和下载文件

在 GWT 中,我们如何在 javascript 和 java 之间共享对象?

从GWT代码调用getElementsByTagNameNS

从 j2me 调用 GWT 方法

GWT:从服务器中分离 js + css + 图像