Как я могу «заменить» выделенный текстовый диапазон в текстовой области в Chrome?

Я пытаюсь использовать Javascript для замены выделенного текста в произвольно выбранном узле TEXTAREA в Chrome (! Не редактируемый div содержимого!) Фрагмент кода, который я вижу, повторяется во многих местах для замены выделенного текста, в основном это:

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

Однако это не работает для полей ввода, таких как TEXTAREA или INPUT TYPE = TEXT. Текст вставляется ДО ТЕКСТАРЕ, а не внутри него.

Существует альтернативный метод для изменения выделенного текста внутри текстовой области, используя textarea.selectionStart и textarea.selectionEnd. Однако для этого необходимо выяснить, какой элемент текстовой области фактически активен / выбран. Chrome / Webkit document.activeElement, кажется, сломан и был сломан в течение длительного времени. Я не могу найти какой-либо обходной путь, чтобы найти "текущую выбранную текстовую область". Смотрите ошибку здесь ...

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

Вы можете увидеть микродемонстрацию проблемы, которую я пытаюсь решить, здесь.

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

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

Есть мысли по этому поводу?

При наличии веб-страницы с произвольным битом текста, выбранным в произвольном узле TEXTAREA, без предварительного знания того, в какой области текста находится фокус, как найти активную область текста и заменить выбранный текст другим текстом?

((К сведению: я использую этот код в расширении Chrome. Сценарий содержимого javascript на странице расширяет javascript страницы, поэтому я понятия не имею, какова структура страницы раньше времени. Она должна работать для любой веб-страницы. ))

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

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