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.