Javascript Ace编辑器:确定模式是否存在

Javascript Ace编辑器:确定模式是否存在,javascript,ace-editor,Javascript,Ace Editor,考虑以下代码段: HTML 我试图实现的是动态设置编辑器会话的模式。所以当我输入“javascript”时,ace加载模式javascript.js 但是当没有“mode”文件时,我想退回到modetext.js 现在-如果有人输入“hdsajdlasjdl”,请求当然会返回404 使用ace检查是否可行,或者我是否必须预先定义支持哪些模式?ace不提供检测404错误的方法,但您可以在将模式设置为不存在模式之前将其设置为文本,这样,如果请求返回404模式,则仍将保留文本 更好的方法是使用所有可用

考虑以下代码段:

HTML

我试图实现的是动态设置编辑器会话的模式。所以当我输入“javascript”时,ace加载
模式javascript.js

但是当没有“mode”文件时,我想退回到
modetext.js

现在-如果有人输入“hdsajdlasjdl”,请求当然会返回404


使用ace检查是否可行,或者我是否必须预先定义支持哪些模式?

ace不提供检测404错误的方法,但您可以在将模式设置为不存在模式之前将其设置为文本,这样,如果请求返回404模式,则仍将保留文本

更好的方法是使用所有可用模式的内置列表 var modelist=ace.require('ace/ext/modelist'); if(modelist.modesByName['hdsajdlasjdl']==未定义){ log(“模式不存在”); }
如何调用此modelist中的
getModeForPath()
-函数?这个函数正好满足我的需要。
<input type="text" id="mode" >

<div id="editor"></div>
$('#mode').on('change', function() {
    createEditor($(this).val().toLowerCase());
});

function createEditor(mode) {
        var editor = ace.edit('editor');
        editor.renderer.setShowGutter(true);
        editor.getSession().setMode("ace/mode/" + mode);
}
<script src="ace/min-noconflict/ace.js"></script>
<script src="ace/min-noconflict/ext-modelist.js"></script>
<script>
var modelist = ace.require('ace/ext/modelist');
if(modelist.modesByName['hdsajdlasjdl'] == undefined) {
    console.log("mode doesn't exist");
}
</script>