Ace Editor:确定模式是否存在

时间:2014-05-02 12:03:51

标签: javascript ace-editor

请考虑以下代码段:

HTML

<input type="text" id="mode" >

<div id="editor"></div>

捆绑了jQuery和Ace Editor的Javascript

$('#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);
}

我想要实现的是动态设置编辑器会话的模式。所以当我输入&#34; javascript&#34; ace加载mode-javascript.js

但是当没有&#34;模式&#34;文件 - 我想回退到mode-text.js

现在 - 如果有人进入&#34; hdsajdlasjdl&#34;当然,请求返回404。

是否可以使用ace进行检查,还是必须预先定义支持哪些模式?

2 个答案:

答案 0 :(得分:1)

Ace没有提供检测404错误的方法,但您可以在将模式设置为不存在模式之前将模式设置为文本,这种方式如果请求返回404模式将保留文本。

更好的方法是使用所有可用模式的内置列表https://github.com/ajaxorg/ace/blob/master/lib/ace/ext/modelist.js#L173

答案 1 :(得分:1)

<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>