当div设置contentEditable=true时,重置其内容后无法光标定位
时间: 2023-12-10 13:06:22 浏览: 98
Vue中div contenteditable 的光标定位方法
当您通过JavaScript重置一个设置了contentEditable="true"的div元素的内容时,光标的位置通常会失去焦点,因为浏览器不知道您希望将光标放在哪里。为了解决这个问题,您可以在重置内容后使用JavaScript代码来设置光标的位置。
以下是一种简单的方法,在重置内容后将光标放在新内容的开头:
```javascript
// 获取div元素
var div = document.getElementById("myDiv");
// 保存光标位置
var selection = window.getSelection();
var range = selection.getRangeAt(0);
var start = range.startOffset;
// 重置内容
div.innerHTML = "新的内容";
// 恢复光标位置
var newRange = document.createRange();
var newSelection = window.getSelection();
newRange.setStart(div.childNodes[0], start);
newRange.setEnd(div.childNodes[0], start);
newSelection.removeAllRanges();
newSelection.addRange(newRange);
// 将焦点设置回div元素
div.focus();
```
这个方法假设您正在将内容设置为纯文本,如果您的新内容包含HTML代码,那么您可能需要调整代码来处理这些标记。
阅读全文