这发生在Chrome中(在Windows上为71.0.3578.80):
在range.setStart上,插入符号移动到参考节点,但是在键入新字符之后,偏移量为0时,该节点之前才出现在该节点中。
预期的行为是,字符出现在range.setStart的引用节点中。
请参阅此处:
function setCaret() {
var el = document.getElementById("editable");
var range = document.createRange();
var sel = window.getSelection();
range.setStart(el.childNodes[2], 0);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);
}
div {
padding: 10px;
}
span {
border: 1px solid black;
font-size: 120%;
padding: 5px;
}
<div id="editable" contenteditable="true">
<span>first </span><span>second </span><span>third </span>
</div>
<div>
<button id="button" onclick="setCaret()">focus</button>
</div>
在Firefox中可以正常工作。 如何在Chrome中获得相同的行为? 还是有其他方法可以实现这一目标? 非常感谢您的任何提示!