Ace编辑器 - 它不会动态更改错误窗口

时间:2014-11-20 08:53:50

标签: ace-editor error-log

我有下一个代码:

var exeWindow = document.getElementById("exeWindow");
var errorWindow = document.getElementById("errorWindow");
var annot = editor.getSession().getAnnotations();
editor.getSession().on("changeAnnotation", execute);

function execute(){

        exeWindow.innerHTML = eval(editor.getValue());
        errorWindow.innerHTML = "";
        annot = editor.getSession().getAnnotations();

        for (var key in annot){
            if (annot.hasOwnProperty(key))
                console.log(annot[key].text + "on line " + " " + (parseInt(annot[key].row)+1));
                errorWindow.innerHTML = annot[key].text + " Line " + " " + (parseInt(annot[key].row)+1);
                exeWindow.innerHTML = "";
        }

        if (TogetherJS.running) {
            TogetherJS.send({type: "execute"});
        }
    };

我试图捕获错误日志,并在执行有效代码之前工作,但是一旦我引入了例如2 + 2,尽管exeWindow正确更改,如果将其重写为2 + a,例如,搜索新错误,exeWindow不会更改,错误也不会出现在errorWindow中。

编辑:对不起,问题是没有得到正确的错误,只有“缺少分号”等错误。

1 个答案:

答案 0 :(得分:0)

如果有人感兴趣,我找到的解决方案就是下一个:

function execute(){
try {
    exeWindow.innerHTML = eval(editor.getValue());
    errorWindow.innerHTML = "";
} catch(err){
    var annot = editor.getSession().getAnnotations();

    for (var key in annot){
        if (annot.hasOwnProperty(key)){
            errorWindow.innerHTML = annot[key].text + " Line " + " " + (parseInt(annot[key].row)+1);
            exeWindow.innerHTML = "";
        }
    }
}

if (TogetherJS.running) {
    TogetherJS.send({type: "execute"});
}

};

简单如下:)