我正在使用基于contentEditable
html 元素的语法荧光笔创建 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
}
}
上面的代码只是概念。但即便如此,您也可以看到它并不有效,您可能会理解我正在寻找更好的替代方案。
另一方面,我不想用我的余生做这个编辑器。
- 是否有一些适用于 DOM 而不是纯文本的 javascript 语法荧光笔?
- 有没有更好的方法如何在不丢失光标位置的情况下更改元素内容?