gpt4 book ai didi

javascript - 在元素后设置光标

转载 作者:行者123 更新时间:2023-11-30 15:39:10 24 4
gpt4 key购买 nike

我有这个代码

elementSpan = document.createElement('span').className = 'mainSpan';
elementSpan.innerHTML = '<span class="childSpan">A</sapn>';
range.insertNode(elementSpan);
range.setStartAfter(elementSpan); //the problem am having

现在我将光标设置在 elementSpan 之后在将它插入到一个 contenteditable div 之后,而不是将光标放在 elementSpan 之后, 它在文本 A 之后在 <span class="childSpan"> 里面但我希望它在 elementSpan 之后.请知道如何执行此操作的任何人?

最佳答案

再次检查您的问题,这是我最接近工作的时间。这将创建一个虚拟的 a,最后带有   并将光标移过它。 a  都很重要,因为如果没有它们,某些浏览器(Safari、Chrome)会强制将键入的文本放在最后一个元素中,因为某些原因优化。如果已经有一个元素,代码将光标移动到下一个元素,可以通过删除 if 将其删除。

我不是范围/选择 API 方面的专家。期待看到其他有趣的答案。

elementSpan = document.createElement('span');
elementSpan.className = 'mainSpan';
document.getElementById('ce').appendChild(elementSpan);
elementSpan.innerHTML = '<span id="childSpan">Another text</span>'; //the problem am having
setCursorAfterElement(document.getElementById('childSpan'));

function setCursorAfterElement(ele) {
if (!ele.nextElementSibling) {
var dummyElement = document.createElement('a')
dummyElement.appendChild(document.createTextNode('\u00A0'))
ele.parentNode.appendChild(dummyElement)
}
var nextElement = ele.nextElementSibling
nextElement.tabIndex=0
nextElement.focus()
var r = document.createRange();
r.setStart(nextElement.childNodes[0], 1);
r.setEnd(nextElement.childNodes[0], 1);

var s = window.getSelection();
s.removeAllRanges();
s.addRange(r);
//document.execCommand("delete", false, null);
}
#childSpan {
border: 1px solid red;
margin: 0px;
}
<div id="ce" contenteditable="true">
</div>

关于javascript - 在元素后设置光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41076588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com