Можно ли получить геометрическое положение (то есть верхние/левые смещения от родительского элемента, страницы и т.д.) текста node?
Получение позиции текстового индекса DOM
Ответ 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, среди прочих.
Ответ 4
В наши дни есть способы. Один из способов: getBoundingRectangle: https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect