У меня есть страница с очень длинным текстовым полем, используемым для редактирования большого количества текстов. Обычно, когда вы набираете, когда каретка приближается к нижней части текстового поля, страница автоматически прокручивается, чтобы сохранить курсор всегда в пределах области просмотра (Firefox будет прокручиваться по одной строке за раз, Chrome будет прокручивать каретку в центр в окне просмотра).
Моя проблема связана с тем, что я программно меняю содержимое текстовой области на основе того, что пользователь набирает. В некоторых случаях это связано с добавлением дополнительного контента, тем самым выталкивая каретку вне поля зрения.
Как только пользователь нажимает клавишу, автопрокрутка запускается, и каретка прокручивается в представление - но не раньше, так как пользователь печатает, они теряют из виду каретку. Я надеялся, что я могу просто инициировать ключевые события в текстовом поле для браузера для автоматического прокрутки, но инициированные события не полностью эмулируют поведение пользователя, и я не получаю ответа.
Единственное решение, которое я вижу сейчас, это попытаться получить координаты XY каретки:
- Поиск позиции символа каретки.
- Построение div, отражающего содержимое текстового поля маркером в позиции каретки.
- Измерение положения маркера.
Есть ли более простой способ сделать это?