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



我有下一个代码:

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

编辑:抱歉,问题是没有得到正确的错误,只有"缺少分号"之类的错误。

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

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"});
}

};

就这么简单:)

相关内容

  • 没有找到相关文章

最新更新