Учитывая текстовое поле с шрифтом нефиксированной ширины, я хочу знать, что ключ, если каретка (как указано element.selectionEnd
) находится в первой строке или в последней строке текста.
Чтобы избежать плохих ответов, вот некоторые решения, которые не работают:
- Разделение на
\n
: предложение может быть разбито на две строки, поскольку оно слишком длинное для ширины textarea. - Измерение текста перед каретой (например, путем копирования текста в div с тем же стилем и измерения высоты пролета): Некоторые символы после каретки могут изменить точку обертывания (обычно между словами).
Здесь скрипка для тестов и удаление некоторой двусмысленности (да, это элемент textarea
, и это не только одна строка и т.д.): http://jsbin.com/qifezupu/4/edit
Примечания:
- Мне не нужны браузеры Internet Explorer 9 или mobile.
- Мне нужно надежное решение, работающее на всех позициях каретки.
- Есть много сложных деталей, которые делают большинство идей непригодными на практике, пожалуйста, создайте рабочую скрипту перед ответом.