Добавление и загрузка Javascript в браузер через Javascript без перезагрузки
У меня есть SWT-браузер в Eclipse RAP Application, где я загружаю что-то на свой локальный сервер и отображаю этот 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 ответ
Спасибо за @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, вы можете пометить это как дубликат, однако я думаю, что моя проблема была немного другой.