Przesuń pozycję kursora za pomocą Javascript?

Chcę przesunąć karetkę dokładnie o cztery spacje przed jej aktualną pozycją, aby poprawnie wstawić kartę. Mam już wstawioną wersję HTML w miejscu pracy karetki, ale kiedy wstawiam HTML, karetka pozostaje w tyle. Spędziłem mniej więcej godzinę, patrząc na różne sposoby, aby to zrobić, i próbowałem ich wiele, ale nie mogę zmusić żadnego z nich do pracy dla mnie. Oto najnowsza metoda, którą wypróbowałem:

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();
    }
}

Nie robi nic - nie porusza karetki, nie rzuca żadnych błędów ani niczego. To mnie zdumiewa. I tak, wiem, że powyższy zestaw metod (ma za zadanie) ustawić kursor w określonej pozycji od początku określonego węzła (to znaczy,input), ale nawet to nie działa. Więc co właściwie robię źle i jak mogę to zrobić dobrze?

Edytuj: Na podstawie linków, które o.v. pod warunkiem, że udało mi się połączyć coś, co w końcu coś robi: rzuca błąd. Tak! Oto nowy kod:

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);
    }
}

To daje błądUncaught Error: NOT_FOUND_ERR: DOM Exception 8. Jakieś pomysły dlaczego?

questionAnswers(1)

yourAnswerToTheQuestion