Этот вопрос намного интересней предыдущего. Я бы тоже хотел знать на него ответ, реально три дня сидел экспериментировал, потом заглянул сюда и вижу, что не один я такой. )))
FF, Opera & Chrom легко выделяют текст обрамленный каким либо тегом, вот код:
rang.selectNodeContents(obj);
selectedText.addRange(rang);
А с выделением произвольного текста действительно проблема, но я ее только в FF наблюдал. Причем range.setStart и range.setEnd по моему работают не адекватно, или я никак не могу понять их логику.
Если выделение нужно для ВИЗИВИГ редактора, в принципе можно обойтись выделением текста в теге, т.е. пользователь выделил текст и нажал кнопку для выделения текста жирным шрифтом, скрипт берет выделенный текст в тег <strong> (это просто пример), а затем выделяет текст в этом теге.
Если есть другие варианты буду рад увидеть.