Bewegen Sie den Cursor mit Javascript?

Ich versuche, das Caret genau vier Stellen vor seiner aktuellen Position zu platzieren, damit ich einen Tabulator richtig einfügen kann. Ich habe bereits die HTML-Einfügung an der Position des Carets aktiviert, aber wenn ich die HTML-Einfügung vornehme, bleibt das Caret zurück. Ich habe die letzte Stunde damit verbracht, nach verschiedenen Möglichkeiten zu suchen, und ich habe viele davon ausprobiert, aber ich kann keine davon dazu bringen, für mich zu arbeiten. Hier ist die neueste Methode, die ich ausprobiert habe:

function moveCaret(input, distance) {
    if(input.setSelectionRange) {
        input.focus();
        input.setSelectionRange(distance, distance);
    } else if(input.createTextRange) {
        var range = input.createTextRange();
        range.collapse(true);
        range.moveEnd(distance);
        range.moveStart(distance);
        range.select();
    }
}

Es macht absolut nichts - bewegt das Caret nicht, wirft keine Fehler oder irgendetwas. Das macht mich verblüfft. Und ja, ich weiß, dass die obige Methode das Caret an einer bestimmten Position vom Anfang des angegebenen Knotens (d. H.input), aber auch das funktioniert nicht. Also, was genau mache ich falsch und wie kann ich es richtig machen?

Bearbeiten: Basierend auf den Links, die o.v. vorausgesetzt, ich habe es geschafft, etwas zusammenzubasteln, das endlich etwas bewirkt: einen Fehler zu werfen. Yay! Hier ist der neue Code:

this.moveCaret = function(distance) {
    if(that.win.getSelection) {
        var range = that.win.getSelection().getRangeAt(0);
        range.setStart(range.startOffset + distance);
    } else if (that.win.document.selection) {
        var range = that.win.document.selection.createRange();
        range.setStart(range.startOffset + distance);
    }
}

Nun, das gibt den FehlerUncaught Error: NOT_FOUND_ERR: DOM Exception 8. Irgendwelche Ideen warum?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage