Подтвердить что ты не робот

Получение позиции текстового индекса DOM

Можно ли получить геометрическое положение (то есть верхние/левые смещения от родительского элемента, страницы и т.д.) текста node?

4b9b3361

Ответ 1

Не напрямую. TextNode не имеет исходных расширений IE * (и подобных) для измерения позиционирования в режиме просмотра.

Только в IE вы можете создать объект TextRange, с трудом пытаться выровнять его с границами TextNode, а затем измерить ограничивающий ограничивающий лоток TextRange и добавить его в позицию родительского элемента (полученного с помощью обычные средства). Однако это куча работы для потенциально шаткого решения с одним браузером.

Другой подход, с которым вы могли бы уйти, - это обернуть текст в элементе span (либо в документе, либо динамически и/или временно на script), и используя диапазон для измерения позиционирования, предполагая его не поднимая никаких дополнительных стилей, которые могут повлиять на позицию. Обратите внимание, однако, что обернутый диапазон может не давать ожидаемых значений справа/снизу; в зависимости от того, что вы хотите с ним сделать, вы можете обернуть первый и последний символ или другое соглашение.

Вкратце: urgh, ничего хорошего.

Ответ 2

Посмотрите в этой статье - он использует свойство offsetParent для рекурсивного вычисления смещения.

Я бы всегда рекомендовал jquery перематывать ваши собственные методы для разных типов браузеров. функции jquery CSS, похоже, имеют нужные вам методы!

Ответ 3

Для этого не существует встроенного, кросс-браузерного способа. я бы используйте jQuery с плагином Dimensions: http://brandonaaron.net/docs/dimensions/

Это кросс-браузер и даст вам высоту, ширину и смещения x и y, среди прочих.