【发布时间】:2023-04-14 07:33:02
【问题描述】:
我有一个简单的 contenteditable div,里面有一些文字。 在 onkeyup 事件中,我想根据正则表达式替换 div 的全部内容(innerHTML)。
例如,
HTML:
some text, more text and $even more text
我计划用 $ 获取所有文本(在上面的示例中为 $even)并将其包装在 span 标签中的功能:
div.onkeypress = function() {
div.innerHTML.replace(/(some_regexp)/, "<span class='class'>$1</span>");
};
问题是在这样的替换光标跳转到 div 的开头之后。我希望它保持原来的样子。
我想我必须在更改之前保存光标的坐标,然后以某种方式使用它们设置光标,但我该怎么做呢? :)
我尝试保存范围对象,但编辑后我认为它指向任何地方。
谢谢!
【问题讨论】:
-
替换的 HTML 是什么样的?
-
我已经更新了原始问题。如果您知道如何在不更改整个 innerHTML 的情况下通过其他方式获得预期的行为 - 很高兴听到。
-
我知道这是一个老问题,但您是否设法找到解决方案?我也有同样的需求
标签: javascript html contenteditable cursor-position