Intervalos de seleção no webkit (Safari / Chrome)

Estou usando um iframe editável por conteúdo para criar um marcador de sintaxe em javascript e uma das coisas mais importantes é poder recuar o código corretamente.

O código a seguir funciona exatamente como deveria no Firefox:

// Create one indent character
var range = window.getSelection().getRangeAt(0);
var newTextNode = document.createTextNode(Language.tabChar);
range.insertNode(newTextNode);
range.setStartAfter(newTextNode);

Ele cria um caractere de tabulação e move o cursor para o lado direito do personagem. No Chrome e Safari, um caractere é inserido, mas o cursor não se move para a direita.

Inspecionei o objeto range no Chrome e no Firefox e notei que o objeto range do Firefox é muito mais rico que o Chrome. Não consegui encontrar nenhuma especificação do objeto range no webkit.

Como posso fazer esse código funcionar para o webkit e o Firefox?

Obrigado!

questionAnswers(1)

yourAnswerToTheQuestion