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

时间:2014-12-15 12:04:34

标签: java javascript gwt javascript-injection

我正在开发使用GWT版本1.x开发的维护项目。现在我必须在同一个项目中添加一些额外的功能,为此我必须将外部JavaScript文件注入GWT应用程序。所以我做了一些研究来实现同样的目标,我可以理解我可以在ScriptInjector[Source]的帮助下注入外部JavaScript。但是这个类在GWT版本 GWT 2.7.0 中可用,并且我使用旧版本的GWT。

所以我想知道我可以在没有ScriptInjector类的情况下注入外部JavaScript文件吗?

2 个答案:

答案 0 :(得分:0)

也许您可以将ScriptInjector的来源复制到您的项目中: https://gwt.googlesource.com/gwt/+/master/user/src/com/google/gwt/core/client/ScriptInjector.java

答案 1 :(得分:0)

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);
    }
}

如果您的JavaScript为TextResource,则此方法有效。如果您要从网址加载,则可以指定element.setSrc(yourURL)而不是element.setText(javascript)。您还可以将URL中的javascript作为HTTP GET加载,并始终执行setText。