HTML / Javascript Как получить объект Range, соответствующий текстовому полю или выделенной области текста? - PullRequest
0 голосов
/ 25 сентября 2019

Используя Typescript (или Javascript), мне нужно динамически создать и расположить узел DOM непосредственно под кареткой (мигающий курсор), пока пользователь находится в текстовом поле, текстовой области или contenteditable div.

Я получилcontenteditable div-часть для работы с чем-то вроде этого:

const range = document.getSelection().getRangeAt(0);
const rect = range.getBoundingClientRect();
const left: number = rect.left;
const top: number = rect.top + rect.height;

myElement.style.position = 'absolute';
myElement.style.top = `${top}px`;
myElement.style.left = `{left}px`;

Это работает как шарм.Проблема в том, что document.getSelection не дает мне выбор, который я хочу в текстовом поле или текстовой области.В своем исследовании я сталкивался со свойствами selectionStart и selectionEnd, но они не дают экранные координаты каретки, а это то, что мне нужно для динамического позиционирования myElement.

.мой вопрос может быть упрощен до: как я могу получить координаты каретки (или, точнее, ограничительный прямоугольник выделенного текста) в текстовом поле или текстовой области?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...