removeAllRanges在chrome / Alternatives中变慢?

时间:2014-11-08 16:56:13

标签: javascript google-chrome range selection

我正在使用node-webkit(Chromium 38.0.2125.104)开发markdown编辑器,该编辑器在键入时将markdown转换为html,并以相同的contenteditable(突出显示类型)呈现它。所以一切都运行良好:我通过在dom中插入一个新节点来保存插入位置。然后我处理我的文字。然后我回到插入位置并删除我的标记节点。

我的问题是我尽可能快地尝试这一切。但是,超过一半的处理时间是由一次操作完成的:

selection.removeAllRanges();

完成所有操作后,在将创建的范围添加到选择对象之前。 大约15/20毫秒丢失到一个操作中,在打字快速时会开始感觉到。有什么方法可以加快速度,比如说别的东西,或者用选择/范围以不同的方式工作? 谢谢(我的意思是,我总是用这个网站寻找答案,但这是我的第一个问题)

1 个答案:

答案 0 :(得分:2)

如果您只对Chrome感兴趣,可以尝试使用非标准的WebKit方法setBaseAndExtent()(抱歉,没有文档链接,因为据我所知,它从未被记录过)直接设置选择。我不知道它是否会更快;我不明白为什么会这样。

假设您的范围存储在名为range的变量中,并且您选择sel

sel.setBaseAndExtent(range.startContainer, range.startOffset,
                     range.endContainer, range.endOffset);