在contenteditable元素中插入DOM元素之后 光标跑到了最前面
时间: 2024-03-16 10:41:33 浏览: 358
Vue中div contenteditable 的光标定位方法
5星 · 资源好评率100%
这可能是因为在插入DOM元素时,没有正确地设置光标位置。你可以通过以下步骤来解决这个问题:
1. 在插入DOM元素之前,获取光标所在位置的范围(range)和偏移量(offset)。
2. 插入DOM元素后,将光标位置设置为之前获取的范围和偏移量。
下面是一个示例代码:
```
// 获取光标所在位置的范围和偏移量
var range = window.getSelection().getRangeAt(0);
var offset = range.startOffset;
// 在contenteditable元素中插入DOM元素
var newElement = document.createElement('div');
document.getElementById('editable').appendChild(newElement);
// 将光标位置设置为之前获取的范围和偏移量
range.setStart(newElement, offset);
range.setEnd(newElement, offset);
var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(range);
```
其中,`editable` 是你的 contenteditable 元素的 id。这段代码将在插入新的 `<div>` 元素后,将光标位置设置为新元素的起始位置,即在插入的 DOM 元素之后。
阅读全文