Переместить позицию курсора с помощью Javascript?

Я рассчитываю переместить каретку ровно на четыре пробела вперед от ее текущего положения, чтобы я мог правильно вставить вкладку. Я уже получил вставку HTML в позиции каретки, но когда я вставляю HTML, каретка остаётся позади. Я провел последний час или около того, рассматривая различные способы сделать это, и я перепробовал множество из них, но я не могу заставить любой из них работать на меня. Вот самый последний метод, который я пробовал:

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

Он абсолютно ничего не делает - не перемещает каретку, не выдает никаких ошибок или чего-либо еще. Это оставляет меня сбитым с толку. И да, я знаю, что вышеупомянутый метод устанавливает (должен) установить каретку в определенной позиции от начала указанного узла (то естьinput), но даже это не работает. Итак, что именно я делаю не так, и как я могу сделать это правильно?

Изменить: на основе ссылок, которые o.v. при условии, что мне удалось собрать воедино что-то, что наконец-то что-то делает: выдает ошибку. Ура! Вот новый код:

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

Теперь это дает ошибкуUncaught Error: NOT_FOUND_ERR: DOM Exception 8, Есть идеи почему?

Ответы на вопрос(1)

Ваш ответ на вопрос