Ich weiß, dass dies ein Jahr alt ist, aber dieser Beitrag ist ein Top-Suchergebnis für viele Fragen zum Finden der Caret-Position und ich fand dies nützlich.
Ich habe versucht, Tims hervorragendes Skript oben zu verwenden, um die neue Cursorposition zu finden, nachdem ich ein Element in einem inhaltsbearbeitbaren Div von einer Position zur anderen gezogen habe. In FF und IE funktionierte es perfekt, aber in Chrome wurden beim Ziehen alle Inhalte zwischen dem Beginn und dem Ende des Ziehens hervorgehoben, was dazu führte, dass die Rückgabe caretOffset
zu groß oder zu klein war (gemessen an der Länge des ausgewählten Bereichs).
Ich habe der ersten if-Anweisung einige Zeilen hinzugefügt, um zu überprüfen, ob Text ausgewählt wurde, und das Ergebnis entsprechend anzupassen. Die neue Aussage ist unten. Verzeihen Sie mir, wenn es unangemessen ist, dies hier hinzuzufügen, da es nicht das ist, was das OP versucht hat, aber wie gesagt, mehrere Suchanfragen nach Informationen in Bezug auf die Caret-Position haben mich zu diesem Beitrag geführt, sodass es (hoffentlich) wahrscheinlich jemand anderem hilft .
Tims erste if-Anweisung mit hinzugefügten Zeilen (*):
if (typeof window.getSelection != "undefined") {
var range = window.getSelection().getRangeAt(0);
var selected = range.toString().length;
var preCaretRange = range.cloneRange();
preCaretRange.selectNodeContents(element);
preCaretRange.setEnd(range.endContainer, range.endOffset);
if(selected){
caretOffset = preCaretRange.toString().length - selected;
} else {
caretOffset = preCaretRange.toString().length;
}
}