Изменить позицию курсора в contenteditable div после изменения innerHTML

У меня есть простой contenteditable div с некоторым текстом в нем. В событии onkeyup я хочу заменить весь контент (innerHTML) div на основе регулярного выражения.

Например,

HTML:

some text, more text and $even more text

Функция, в которой я планирую получить весь текст с помощью $ ($ даже в примере выше ) и оберните его в тег span:

div.onkeypress = function() { 
     div.innerHTML.replace(/(some_regexp)/, "<span class='class'>$1</span>"); 
}; 

Проблема в том, что такой курсор замены перескакивает в начало div. Я хочу, чтобы он оставался там, где был раньше.

Думаю, мне нужно сохранить координаты курсора перед изменением, а затем каким-то образом с их помощью вернуть курсор обратно, но как я могу это сделать? :)

Я попытался сохранить объект диапазона, но после редактирования считаю, что он никуда не указывает.

Спасибо!

13
задан Ilya Tsuryev 27 September 2010 в 06:40
поделиться