В разработке текущего проекта потребовалось производить некие манипуляции с текстовым полем на стороне клиента:
- определение текущей позиции курсора
- определение выделенного фрагмента
- установка / снятие выделенного фрагмента
- изменение позиции курсора
Вроде задача простая, но тут как всегда подоспел веселый цирк браузеров и веселье началось. В результате вот что получилось: