javascript - 在 chrome/Alternatives 中,removeAllRanges 速度慢吗?

标签 javascript google-chrome range selection

我正在使用node-webkit(Chromium 38.0.2125.104)开发一个markdown编辑器,它可以在输入时将markdown转换为html,并将其呈现在相同的contenteditable(某种突出显示)中。所以一切都这样工作正常:我通过在 dom 中插入一个新节点来保存插入符位置。然后我处理我的文本。然后我返回插入符号位置并删除我的标记节点。

我的问题是我试图尽快完成这一切。但一半以上的处理时间是由单个操作占用的:

selection.removeAllRanges();

完成所有操作后,将我创建的范围添加到选择对象之前。 一次操作会损失大约 15/20 毫秒,这是快速打字时开始感觉到的。有什么方法可以加快速度,比如调用其他东西,或者以不同的方式处理选择/范围? 谢谢(我是认真的,我总是使用这个网站来寻求答案,但这是我的第一个问题)

最佳答案

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

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

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

关于javascript - 在 chrome/Alternatives 中,removeAllRanges 速度慢吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26819647/

相关文章:

javascript - 如何将插入符位置存储在可编辑的 div 中?

algorithm - 范围的超集——寻找最大距离

javascript - 扩展图像网格问题

javascript - 如何绕过框架或任何嵌入式框架上的 "Blocked call to navigator.vibrate because user hasn' t”?

javascript - 如何从 View 重新加载部分 View ?

javascript - chrome.fileSystem api 文件到临时目录

php - 如何对单个表中的多行进行分组并获取给定范围内的所有记录

perl - 如何确定 perl 范围迭代器的最大范围?

javascript - 获取 javascript 对象中共享同级同级的所有值

javascript - 如何仅使用纯 javascript 对滚动上的元素进行简单的不透明度更改?