Динамически добавленный элемент скрипта с его атрибутом src не загружает файл js в src - PullRequest
0 голосов
/ 26 января 2019

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

Правильно загружается скрипт 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.-->

1 Ответ

0 голосов
/ 26 января 2019

Я нашел, как это исправить. При создании атрибутов элемента script создайте атрибут 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);
      };
...