Задать вопрос
parsek
@parsek

Как подгрузить кусок HTML с последующим выполнением скриптов в нём?

Хочу оптимизировать сайт для повышения скорости его загрузки. Как подгружать отдельно скрипт или кусок JS кода в интернете инструкций много. Но мне надо загрузить целый кусок HTML содержащий в себе как разметку так и скрипты. Там содержится Yandex.Metrika, Global site tag и JivoSite. Может ещё что добавится.

Пробую вот так:
window.setTimeout(function() {
	fetch("/js/").then(function (response) {
		response.text().then(function (text) {
			let div = document.createElement('div');
			div.innerHTML = text;
			document.getElementsByTagName("body")[0].append(div);
		});
	});
}, 2000);


Кусок кода подгружается и замечательно вставляется. Но вот JS не выполняется. Есть у кого готовые решения на этот случай?
  • Вопрос задан
  • 87 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 1
@artem-dainov
Php, java, js. Boot spring, jquery, git
jquery это умеет. Но если вы боитесь об него руки пачкать, тогда вам нужно находить скрипты, и создавать их заново в действующей странице.
У вас есть index.html и content.html
В content.html есть какой-то скрипт между тегами
Вам нужно получить данные между этими тегами. Далее создать на странице index.html новый элемент с именемscript и вставить в .innertext или в .innerHTML данные из скрипта, который находится в content.html
Но я бы на вашем месте так бы не парился, ибо jquery это очень хорошо выполняет за вас.
И да, лучше переместите все скрипты из страниц в файл .js
Так код отлаживать лучше и загружаться будет один раз в index.html
А там хоть content.html вызывайте, хоть какой другой файл, браузер будет распознавать как надо.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@MrColdCoffee
web
Найти в подгруженном коде"<script>"ы
затем создать элемент(ы) скрипт:
document.createElement('script')
вставить текст скрипта в содержимое или ссылку в атрибут
Затем заменить найденный на созданный
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Ох не стоит оптимизировать сайт при помощи fetch-запросов, которые не подразумевают какого-либо кэширования. Если очень хочется - используйте <script>, который будет добавлять в страницу HTML, но ни как не fetch, предназначенный для подгрузки динамических данных!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽