我正在使用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/