Получить позицию курсора в contenteditable по координатам - PullRequest
1 голос
/ 27 января 2020

Я разрабатываю приложение с элементами contenteditable и функцией перетаскивания для некоторых элементов span. Цель состоит в том, чтобы перетащить элемент span и поместить его в элемент contenteditable.

Что у меня есть сейчас - при перетаскивании на событие document.onmouseup я получаю целевой элемент (из свойства event.toElement), чтобы я мог легко удалить упавший элемент из родительского и добавить, где он был удален.

Что мне нужно - позиция курсора / каретки (эквивалент свойства input selectionStart) для элемента contenteditable по заданным координатам события мыши. Это сложно.

Я знаю, что есть window.getSelection(), и он отлично работает, но только если курсор действительно есть. Пока я выполняю перетаскивание, курсор находится не в элементе contenteditable.

Я пытался запустить event.toElement.focus() при отбрасывании, но, конечно, курсор переместился в положение 0. Также я играл с document.elementFromPoint(x, y) но он возвращает весь элемент, я могу вызвать click() на нем, но те же результаты -

Есть ли способ получить позицию курсора по координатам?

...