javascript - Hur kan jag sätta markören för markering till en specifik punkt i en contentEditable-div med flera andra divar inom den?
Jag hoppas att ni alla mår mycket bra.
Idag försöker jag placera markören på ett specifikt index (this.selectionStart) i ett contentEditable-element som har andra div- och span-element inom sig.
Koden för att få this.selectionStart är redan ordnad, vi försöker nu att återställa markören när markeringen är borta (på grund av en ny rendering av mitt element)
Jag har genomsökt internet efter hjälp men jag har bara hittat lösningar som fungerar för contentEditable-element som inte innehåller några andra element.
Det här är det närmaste jag har kommit en fungerande lösning tror jag.
// this.selectionStart is the index we want the caret to be at
// this.element is the contenteditable element
if (this.selectionStart) {
// We need to set the selection to the correct position
// get the selection
var selection = window.getSelection();
// create a range
var range = document.createRange();
// set the range to the correct position
range.setStart(this.element.childNodes[0], this.selectionStart); // error here
range.setEnd(this.element.childNodes[0], this.selectionStart);
// apparently this is needed
range.collapse(true);
selection.removeAllRanges();
selection.addRange(range);
}
Detta ger oss det roliga felet Uncaught DOMException: Failed to execute 'setStart' on 'Range': There is no child at offset 15. (när this.selectionStart är 15)
Snälla, jag ber dig, hjälp mig om du alls kan.
Tack så mycket, detta är mycket, mycket viktigt.