在ace编辑器中仅使最后一行可编辑

时间:2018-01-03 12:07:45

标签: ace-editor

王牌编辑 只读区域

1 个答案:

答案 0 :(得分:1)

如果选择了错误的行,您可以使用exec上的editor.commands事件来禁用非readonly命令



body,html {
    height: 90%
}

<script src=https://ajaxorg.github.io/ace-builds/src/ace.js></script>
<script>
editor = ace.edit(document.body)
editor.setOptions({
  mode: "ace/mode/javascript"
});
editor.commands.on("exec", function(e) {
    if (e.command.readOnly)
        return;
    var editableRow = editor.session.getLength() - 1;
    var deletesLeft = e.command.name == "backspace" || e.command.name == "removewordleft";
    debugger
    var notEditable = editor.selection.getAllRanges().some(function(r) {
        if (deletesLeft && r.start.column == 0 && r.end.column == 0) return true;
        return r.start.row != editableRow || r.end.row != editableRow;
    });
    if (notEditable)
        e.preventDefault();
});
</script>
&#13;
&#13;
&#13;