我正在使用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.-->
答案 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);
};