Mover a posição do cursor com Javascript?

Eu estou olhando para mover o cursor exatamente quatro espaços à frente de sua posição atual para que eu possa inserir uma guia corretamente. Eu já tenho a inserção de HTML na posição do cursor, mas quando insiro o HTML, o cursor é deixado para trás. Passei a última hora olhando várias maneiras de fazer isso e tentei muitas delas, mas não consigo que nenhuma delas funcione para mim. Aqui está o método mais recente que eu tentei:

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

Não faz absolutamente nada - não move o cursor, nem erros nem nada. Isso me deixa perplexo. E sim, eu sei que o conjunto de métodos acima (é suposto) definir o cursor em uma determinada posição a partir do início do nó especificado (isto é,input), mas mesmo isso não está funcionando. Então, o que exatamente estou fazendo de errado, e como posso fazer certo?

Edit: Baseado nos links que o.v. Desde que consegui fazer algo que está finalmente fazendo algo: lançar um erro. Yay! Aqui está o novo código:

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

Agora, isso dá o erroUncaught Error: NOT_FOUND_ERR: DOM Exception 8. Alguma idéia por quê?

questionAnswers(1)

yourAnswerToTheQuestion