GWT-在不使用ScriptInjector的情况下将外部JavaScript文件注入GWT应用程序

GWT-在不使用ScriptInjector的情况下将外部JavaScript文件注入GWT应用程序,java,javascript,gwt,javascript-injection,Java,Javascript,Gwt,Javascript Injection,我正在从事维护项目,该项目是用1.x版开发的。现在我必须在同一个项目中添加一些额外的特性,为此我必须将外部JavaScript文件注入GWT应用程序。所以我做了一些研究来达到同样的目的,我可以理解我可以在类的帮助下注入外部JavaScript。但是这个类在GWT版本GWT2.7.0中可用,我使用的是GWT的旧版本 因此,我想知道,我可以在不使用ScriptInjector类的情况下注入外部JavaScript文件吗?也许您可以将ScriptInjector的源代码复制到您的项目中: 公共类Jav

我正在从事维护项目,该项目是用1.x版开发的。现在我必须在同一个项目中添加一些额外的特性,为此我必须将外部JavaScript文件注入GWT应用程序。所以我做了一些研究来达到同样的目的,我可以理解我可以在类的帮助下注入外部JavaScript。但是这个类在GWT版本GWT2.7.0中可用,我使用的是GWT的旧版本


因此,我想知道,我可以在不使用
ScriptInjector
类的情况下注入外部JavaScript文件吗?

也许您可以将
ScriptInjector
的源代码复制到您的项目中:

公共类JavaScriptInjector{
私有静态ScriptElement createScriptElement(){
ScriptElement脚本=Document.get().createScriptElement();
setAttribute(“type”、“text/javascript”);
script.setAttribute(“字符集”、“UTF-8”);
返回脚本;
}
受保护的静态HeadElement getHead(){
Element=Document.get().getElementsByTagName(“head”)
.getItem(0);
断言元素!=null:“需要HTML头元素”;
返回HeadElement.as(元素);
}
/**
*将JavaScript代码注入到
*中的{@code…}元素
*文档标题。
*
*@param-javascript
*JavaScript代码
*/
公共静态void注入(字符串javascript){
HeadElement head=getHead();
ScriptElement=createScriptElement();
setText(javascript);
头、子(元素);
}
}

如果您将JavaScript作为一个应用程序,那么这是可行的。如果要从URL加载,可以指定
元素.setSrc(yourURL)
而不是
元素.setText(javascript)
。您还可以从URL加载javascript作为HTTP GET,然后执行setText。

我以前没有这样做过,因此如何将
ScriptInjector
类的源代码复制到我的项目中。我必须把它放在哪里。
public class JavaScriptInjector {

    private static ScriptElement createScriptElement() {
        ScriptElement script = Document.get().createScriptElement();
        script.setAttribute("type", "text/javascript");
        script.setAttribute("charset", "UTF-8");
        return script;
    }

    protected static HeadElement getHead() {
        Element element = Document.get().getElementsByTagName("head")
                .getItem(0);
        assert element != null : "HTML Head element required";
        return  HeadElement.as(element);
    }


     /**
     * Injects the JavaScript code into a
     * {@code <script type="text/javascript">...</script>} element in the
     * document header.
     *
     * @param javascript
     *            the JavaScript code
     */
    public static void inject(String javascript) {
        HeadElement head = getHead();
        ScriptElement element = createScriptElement();
        element.setText(javascript);
        head.appendChild(element);
    }
}