Como posso "substituir" um intervalo de texto selecionado em uma área de texto no Google Chrome?

Eu estou tentando usar JavaScript para substituir o texto selecionado em um nó TEXTAREA selecionado arbitrariamente no Chrome (! Não um div editável de conteúdo!) O fragmento de código que eu vejo repetido em muitos lugares para substituir o texto selecionado basicamente faz isto:

var sel = window.getSelection();
var range = sel.getRangeAt(0);
range.insertNode( document.createTextNode("test "));

No entanto, isso não funciona para campos de entrada, como TEXTAREA ou INPUT TYPE = TEXT. O texto é inserido ANTES da TEXTAREA em vez de dentro dela.

Existe um método alternativo para modificar o texto de seleção dentro de uma área de texto usando textarea.selectionStart e textarea.selectionEnd. No entanto, isso requer descobrir qual elemento textarea está realmente ativo / selecionado. O Chrome / Webkit document.activeElement parece estar quebrado e foi quebrado por um longo tempo. Não consigo descobrir nenhuma solução alternativa para encontrar a "área de texto selecionada atualmente". Veja o bug aqui ...

http://code.google.com/p/chromium/issues/detail?id=14436

Você pode ver uma micro-demonstração do problema que estou tentando resolver aqui.

http://dj1.willowmail.com/~jeske/_drop/insertIssue/1.html

http://ajaxandxml.blogspot.com/2007/11/emulating-activeelement-property-with.html

Alguma idéia sobre isso?

Dada uma página da Web com um bit arbitrário de texto selecionado em um nó TEXTAREA arbitrário, sem saber antecipadamente em qual área de texto o foco está, como localizo a área de texto ativa e substituo o texto selecionado por algum outro texto?

((FYI: eu estou usando este código em uma extensão do Chrome. Um script de conteúdo javascript in-page está estendendo a página javascript, então eu não tenho idéia do que a estrutura da página é antes do tempo. Ele precisa trabalhar para qualquer página da web). ))

questionAnswers(2)

yourAnswerToTheQuestion