Динамически добавленный элемент скрипта с его атрибутом src не загружает файл js в src

Я использую редактор CodeMirror. И у него есть опция, которая позволяет изменить режим (язык). Я создал код для загрузки файла .js, который соответствует языку. См. код ниже. Все работает нормально. элемент script с его атрибутом src добавляется в голову, но редактор codemirror не загружает язык, потому что элемент сценария написан в голове, но, вероятно, не загружен.

Сценарий js с подсветкой python, написанный в html-файле, загружается правильно. Только динамически загружаемые файлы js не работают с codemirror.

Пожалуйста, помогите мне, я не могу это исправить.

languageselect.addEventListener("change",function(){
        language =  languageselect.value ;
        let header = document.head;
        let script = document.createElement("script");
        script.src = "codemirror/mode/" + language + "/" + language + ".js";
        header.appendChild(script);
        editor.setOption("mode",language);
      });
<script src = "codemirror/mode/python/python.js"></script>

<!--The python highlighting js script which is written in the html file is loading correctly. Only the dynamically loaded js file aren't working with codemirror.-->

Какие ошибки появляются в консоли?

Randy Casburn 25.01.2019 23:48

Вы знакомы с использованием инструментов разработки? Проверьте панель «Сеть» и убедитесь, что скрипт вообще загружается.

CodeSpent 26.01.2019 00:00

@RandyCasburn без ошибок. Просто не загружается в браузере

Des2207 26.01.2019 00:15

@CodeSpent Я использую инструменты разработчика, чтобы взглянуть на код. Я могу открыть и прочитать динамически добавленный файл js.

Des2207 26.01.2019 00:16

следующий вопрос: работает ли редактор в iFrame?

Randy Casburn 26.01.2019 00:17

@RandyCasburn Нет, я просто открываю html-файл в браузере.

Des2207 26.01.2019 00:19

Думаю, тогда нам понадобится больше данных для устранения неполадок. Дайте нам какой-нибудь код, который мы можем проверить на скрипке.

CodeSpent 26.01.2019 00:20

@CodeSpent, ты не можешь. Codemirror должен быть загружен

Des2207 26.01.2019 00:33

Это не важно, мы можем использовать другие источники, так как нас не волнует ничего, кроме загрузки скрипта. С тем, что вы предоставили в настоящее время, мы ничего не можем сделать, кроме как задавать вам вопросы, что неэффективно.

CodeSpent 26.01.2019 00:38

Предоставленный вами код должен: разрешить нам инициировать событие изменения и добавить его в заголовок.

CodeSpent 26.01.2019 00:38

Я нашел, как это исправить, спасибо.

Des2207 26.01.2019 01:05
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
11
299
1

Ответы 1

Я нашел, как это исправить. При создании атрибутов элемента скрипта создайте атрибут onload, который запустит функцию для изменения режима редактора CodeMirror:

      languageselect.addEventListener("change",function(){
        language =  languageselect.value ;
        src = "codemirror/mode/" + language + "/" + language + ".js";
        let header = document.head;
        
        let script = document.createElement("script");
        script.src = src;
        script.onload = change_language;
        header.appendChild(script);
      
      });

      function change_language(){
        language =  languageselect.value;
        editor.setOption("mode",language);
      };

Другие вопросы по теме