Как я могу получить смещение в стиле DOMRange в узле DOM для данного расположения мыши (или документа)? - PullRequest
4 голосов
/ 04 февраля 2012

Я знаю, как определить, какие узлы DOM пересекают абсолютную позицию.Но скажем, это текстовый узел.Как я могу определить смещение внутри текстового узла, соответствующего этому местоположению?Я хотел бы построить DOMRange из известной позиции в эту позицию.

1 Ответ

1 голос
/ 12 февраля 2012

Первым шагом было бы найти все Elements, которые пересекают позицию. Вы должны использовать метод Element.getBoundingClientRect для этого. Затем вы можете легко получить все Text узлы, которые находятся внутри этого Element. Сложная часть состоит в том, чтобы выяснить, какой текст в этих узлах Text находится в этих границах. Вы можете начать с Element.getClientRects, чтобы получить строки текста в этом Element. Вот отличный пример .

Затем вы захотите построить объект Range, соответствующим образом изменив startOffset и endOffset. Вы также можете использовать метод getClientRects для объекта Range.

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