我正在开发使用GWT版本1.x开发的维护项目。现在我必须在同一个项目中添加一些额外的功能,为此我必须将外部JavaScript文件注入GWT应用程序。所以我做了一些研究来实现同样的目标,我可以理解我可以在ScriptInjector类[Source]的帮助下注入外部JavaScript。但是这个类在GWT版本 GWT 2.7.0 中可用,并且我使用旧版本的GWT。
所以我想知道我可以在没有ScriptInjector
类的情况下注入外部JavaScript文件吗?
答案 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。