GWT вставляет script элемент в html файл
В моем проекте gwt. У меня есть script, которые вызывают словарь:
<script type="text/javascript" src=conf/iw_dictionary.js></script>
вместо того, чтобы писать этот элемент script в html файле. Я хочу ввести его в html из точки входа, при загрузке модуля.
как я могу это сделать?
Ответы
Ответ 1
Используйте com.google.gwt.core.client.ScriptInjector
, так как он был создан специально для таких вещей
ScriptInjector.fromUrl("conf/iw_dictionary.js").setCallback(
new Callback<Void, Exception>() {
public void onFailure(Exception reason) {
Window.alert("Script load failed.");
}
public void onSuccess(Void result) {
Window.alert("Script load success.");
}
}).inject();
Ответ 2
В основном вы вводите элемент script в свой onModuleLoad():
Element head = Document.get().getElementsByTagName("head").getItem(0);
ScriptElement sce = Document.get().createScriptElement();
sce.setType("text/javascript");
sce.setSrc("conf/iw_dictionary.js");
head.appendChild(sce);
Браузер автоматически загрузит его, как только он будет введен.
Ответ 3
Вы можете просто добавить элемент <script>
в ваш файл *.gwt.xml.
<script src='conf/iw_dictionary.js' />
onModuleLoad
вызывается только после загрузки script (как если бы он был на вашей странице html).
Ответ 4
Здесь вы можете найти ответы от jusio, Dom и Thomas Broyer. В моем конкретном случае я хотел ввести в GWT серию сценариев polyfill для поддержки некоторых IE8, которые нам нужны при запуске собственного JS-кода. Скрипты polyfill должны быть доступны для контекста окна iframe GWT - НЕ главная страница. Для этого использование ScriptInjector
было правильным подходом, поскольку он прикрепляет script на этом уровне. Вы можете сделать ScriptInjector
установить сценарии в окно хоста с помощью setWindow(TOP_WINDOW)
. Добавление скриптов с тегом <script>
в файл *.gwt.xml, похоже, было прикреплено к окну хоста, как и при использовании подхода @Dom.