动态添加的具有src属性的脚本元素不会在src中加载​​js文件

时间:2019-01-25 22:44:12

标签: javascript html css codemirror

我正在使用CodeMirror编辑器。并且它具有允许更改模式(语言)的选项。我创建了一个代码来加载与该语言相对应的.js文件。请参见下面的代码。一切正常。具有src属性的script元素被添加到head中,但是codemirror编辑器不会加载该语言,因为script元素是用head编写的,但可能未加载。

在html文件中编写的python高亮js脚本已正确加载。只有动态加载的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 :(得分:0)

我找到了解决方法。创建脚本元素的属性时,请创建一个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);
      };