3

我正在使用基于contentEditablehtml 元素的语法荧光笔创建 javascript 编辑器。我写了一个管理编辑器的类,它的工作方式如下:

function Editor() {
    this.setContent = function(content) {
         var pos = //Computes cursor position in current dom scope (number of characters from begining)
         editor.innerHTML = content;
         /* Here I set the cursor back, again, it is complicated and slow process*/
    }
    this.highlight = function() {
         this.setContent(someHighlighter.highlight(this.getTextContent()));  //Slow - highlights whole innerText of editor DOM and sets it as innerHTML
    }
}

上面的代码只是概念。但即便如此,您也可以看到它并不有效,您可能会理解我正在寻找更好的替代方案。
另一方面,我不想用我的余生做这个编辑器。

  1. 是否有一些适用于 DOM 而不是纯文本的 javascript 语法荧光笔?
  2. 有没有更好的方法如何在不丢失光标位置的情况下更改元素内容?
4

0 回答 0