Я пытаюсь извлечь точный выбор и расположение курсора из текстового поля. Как обычно, что легко в большинстве браузеров не в IE.
Я использую это:
var sel=document.selection.createRange();
var temp=sel.duplicate();
temp.moveToElementText(textarea);
temp.setEndPoint("EndToEnd", sel);
selectionEnd = temp.text.length;
selectionStart = selectionEnd - sel.text.length;
Работает в 99% случаев. Проблема в том, что TextRange.text
не возвращает ведущие или завершающие новые строковые символы. Поэтому, когда курсор представляет собой пару пустых строк после абзаца, он дает позицию в конце предыдущего абзаца, а не фактическую позицию курсора.
например:
the quick brown fox| <- above code thinks the cursor is here
| <- when really it here
Единственное исправление, о котором я могу думать, - временно вставить символ до и после выбора, захватить фактический выбор и затем снова удалить эти временные символы. Это взлом, но в быстром эксперименте похоже, что он будет работать.
Но сначала я хотел бы быть уверенным, что нет более простого способа.