Добавление и загрузка Javascript в браузер через Javascript без перезагрузки - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть SWT-браузер в Eclipse RAP-приложении, где я загружаю что-то на свой локальный сервер и отображаю этот HTML-код.

URL выглядит примерно так: "http://localhost:port/......./myhtml.html"

Я хочу добавить источники сценариев в мой HTML, не перезагружая страницу. В настоящее время я делаю это с помощью Javascript, который я выполняю в браузере.

var script = document.createElement('script');
script.setAttribute('src', 'SOMESOURCE');
document.head.appendChild(script);

Это работает, что я в итоге получаю правильные теги сценариядобавленный в HTML DOM, однако он не загружает ссылки, поэтому я не могу получить доступ к чему-либо определенному в этих ссылках сценария, но вызов чего-то вроде

window.top.location.reload(false)

тоже не работает, потому что это перезагружает HTML и для этогоудаление моих начальных добавленных тегов сценариев.

Основная проблема в том, что я очень ограничен из-за технологий, которые мы здесь используем, поэтому я могу выполнять только запросы javascript в своем браузере.

PS: Для тестирования вы можете просто открыть любой браузер, такой как Chrome и Firefox, открыть его Developer Toolkit и набрать этот скрипт вэлектронная консоль.Сайт не имеет значения.

1 Ответ

0 голосов
/ 05 февраля 2019

Спасибо за @JensV за помощь.

Проблема была в том, что я добавил свой скрипт, но он не загружал его содержимое.Так что я был, как описано в вопросе.

Однако, как уже упоминалось из @JensV в Bug

загружать сценарии асинхронно

это описано дляиспользуйте объект Promise, он будет обрабатывать события загрузки и ошибки.

function loadScript(src) {
    return new Promise(function (resolve, reject) {
        var s;
        s = document.createElement('script');
        s.src = src;
        s.onload = resolve;
        s.onerror = reject;
        document.head.appendChild(s);
    });
}

Итак, сначала я выполнил этот Javascript и, следовательно, добавил эту функцию, а затем просто выполнил ее с нужным источником.

Еще раз спасибо за @JensV, вы можете пометить это как дубликат, однако я думаю, что моя проблема немного отличалась от этой.

...