我需要将插入符号移动到contenteditable节点的末尾,就像在Gmail notes小部件上一样。
我在StackOverflow上读到了线程,但这些解决方案都是基于使用输入的,它们不能与contenteditable元素一起工作。
发布于 2020-09-25 19:40:51
最初开始键入时,contenteditable <div>和<span>的问题就会得到解决。一种解决方法是在div元素和函数上触发一个焦点事件,清除并重新填充div元素中已经存在的内容。这样问题就解决了,最后您可以使用range和selection将光标放在末尾。对我很管用。
moveCursorToEnd(e : any) {
let placeholderText = e.target.innerText;
e.target.innerText = '';
e.target.innerText = placeholderText;
if(e.target.innerText && document.createRange)
{
let range = document.createRange();
let selection = window.getSelection();
range.selectNodeContents(e.target);
range.setStart(e.target.firstChild,e.target.innerText.length);
range.setEnd(e.target.firstChild,e.target.innerText.length);
selection.removeAllRanges();
selection.addRange(range);
}
}在HTML代码中:
<div contentEditable="true" (focus)="moveCursorToEnd($event)"></div>https://stackoverflow.com/questions/1125292
复制相似问题