Информация об изменениях

Сообщение Re[4]: Загрузка и выполнение скрипта2 из скрипта1 перед срип от 10.08.2025 13:39

Изменено 10.08.2025 13:42 rFLY

Re[4]: Загрузка и выполнение скрипта2 из скрипта1 перед сриптом3
Здравствуйте, bnk, Вы писали:

bnk>Вот несколько способов решения этой задачи:

bnk>## Способ 1: Использование `async = false` с правильным порядком
bnk>let script3 = document.querySelector('script[src="script3.js"]');
bnk>document.head.insertBefore(script2, script3);

bnk>## Способ 2: Удаление и повторная вставка script3.js

bnk>let script3 = document.querySelector('script[src="script3.js"]');
bnk>// Удаляем script3 из DOM
bnk>script3.remove();

Ну вот, что я и говорил на счет ИИ. На момент выполнения script1.js в DOM еще нет script3.js. По этому ни удалить его, ни вставить перед ним не получится. Вернее вставить можно, как я писал в самом начале обычным appendChild, а не так сложно как предлагает ИИ. Но это ничего не дает, кроме того, что в итоговом HTML он будет стоять на этом месте. Вот только выполнятся они будут в порядке будет: script1.js, script3.js, script2.js

bnk>## Способ 3: Загрузка через fetch и eval (не рекомендуется)

Eval я в стартовом сообщении не указывал, но его тоже хотелось бы избежать.

bnk>Если возможно изменить архитектуру, рассмотрите использование ES6 модулей:

Не могу, оно еще и на IE11 работать должно. Кстати, в нем скрипты выполняются в том порядке, в котором мне нужно.
Re[4]: Загрузка и выполнение скрипта2 из скрипта1 перед срип
Здравствуйте, bnk, Вы писали:

bnk>Вот несколько способов решения этой задачи:

bnk>## Способ 1: Использование `async = false` с правильным порядком
bnk>let script3 = document.querySelector('script[src="script3.js"]');
bnk>document.head.insertBefore(script2, script3);

bnk>## Способ 2: Удаление и повторная вставка script3.js

bnk>let script3 = document.querySelector('script[src="script3.js"]');
bnk>// Удаляем script3 из DOM
bnk>script3.remove();

Ну вот, что я и говорил на счет ИИ. На момент выполнения script1.js в DOM еще нет script3.js. По этому ни удалить его, ни вставить перед ним не получится. Вернее вставить можно, как я писал в самом начале обычным appendChild, а не так сложно как предлагает ИИ. Но это ничего не дает, кроме того, что в итоговом HTML он будет стоять на этом месте. Вот только выполнятся они будут в порядке будет: script1.js, script3.js, script2.js

bnk>## Способ 3: Загрузка через fetch и eval (не рекомендуется)

Eval я в стартовом сообщении не указывал, но его тоже хотелось бы избежать.

bnk>Если возможно изменить архитектуру, рассмотрите использование ES6 модулей:

Не могу, оно еще и на IE11 работать должно. Кстати, в нем скрипты выполняются в том порядке, в котором мне нужно.

UPD: а можешь у него переспросить на счет первых двух способов — не ошибся ли он, т.к. script3.js еще быть не должно.