TransWikia.com

Выполнение динамически добавленного скрипта

Stack Overflow на русском Asked by Illia on January 1, 2022

Динамически добавляю скрипт в документ.

  1. Если добавляю текстом (script.text = "...";), он запускается сразу же.
  2. Если добавляю внешний скрипт (script.src = "...";), он запустится после того, как закончит выполняться мой.

Т.е. в примере внизу я получу “0 1 2” и “3 3 3” соответственно (в 1.js та же строка – “document.body.innerHTML += i”).

<body>
  <script>
    for (i = 0; i < 3; i++){
      var script = document.createElement('script');
      script.src = "1.js";
    //  script.text = "document.body.innerHTML += i";
      document.body.append(script);
    };
  </script>
</body>

Почему так задумано (я это где-то пропустил)? И как мне запустить 1.js сразу же после добавления?

2 Answers

попробуйте добавить async, тоесть браузер при возможности запускает скрипт асинхронно. Это означает, что указанный в атрибуте src файл будет выполняться без ожидания загрузки и отображения веб-страницы

Answered by Yuriy Chaban on January 1, 2022

при добавления скрипта с урлом, браузер обращается на этот урл и выполняет его ассинхронно вашему коду. это можно увидеть в деббагере браузера Chrome -> Network -> XHR.

сразу выполнить удаленный скрипт невозможно в данном контексте.

Answered by tcpack4 on January 1, 2022

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP