修改innerHTML后保存/恢复contentitable上的选择

Save / restore selection on contentEditable AFTER modifying innerHTML

本文关键字:contentitable 选择 恢复 innerHTML 保存 修改      更新时间:2023-09-26

我知道在contentEditable中获取/设置光标位置几乎是不可能的。我不在乎知道这些信息。我需要能够保存当前选择,修改div的innerHTML,然后恢复选择。

我一直在试验在可满足的选定文本保存和恢复中提供的答案。它在输入div后起作用,但在编程修改div的innerHTML之后不起作用。相反,当我调用restorereselection时,插入符号只是转到开头。

关于如何能够在修改innerHTML而不是键入后保存/恢复contentteditable上的选择的任何建议将不胜感激。

如果您正在对可编辑元素的现有innerHTML进行某种字符串替换,则可以使用我的Rangy库及其保存/恢复选择模块。它使用具有特定id的不可见元素来标记选择的开始和结束边界,所以如果您的innerHTML更改不包括这些元素,那么这将不起作用。

另一种选择是完全基于元素文本节点内的字符索引。我在这里写了一个简单的实现:https://stackoverflow.com/q/5596688/96100