Сообщение 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 работать должно. Кстати, в нем скрипты выполняются в том порядке, в котором мне нужно.
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 еще быть не должно.
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 еще быть не должно.