2013-04-25 1 views
7

Для примера,Как получить позицию и размер текстового узла HTML с помощью javascript?

<div style="width:100px;text-align:center">text</div> 

Я хочу, чтобы получить позицию и размер text текстового узел, а не его div обертки. Является ли это возможным?

+0

Вы можете получить позицию Div, а затем вам придется добавить любой верхний и левый отступы и границы. – Asken

+0

@ user125697: 'text' - это узел, а не элемент. Он не дублирует этот вопрос. – benjaminchanming

+0

[this] (http://stackoverflow.com/questions/7913631/jquery-get-position-of-character-in-a-div) может помочь вам – anpsmn

ответ

12

В современных браузерах (последние версии Mozilla, WebKit и Opera) вы можете использовать getClientRects() method of a DOM range, который охватывает текстовый узел.

var textNode = document.getElementById("wombat").firstChild; 
 
var range = document.createRange(); 
 
range.selectNodeContents(textNode); 
 
var rects = range.getClientRects(); 
 
if (rects.length > 0) { 
 
    console.log("Text node rect: ", rects[0]); 
 
}
<div id="wombat">Wombat</div>

+0

Этот код работает со старым браузером. если нет, то какое решение для старого браузера. – Domezchoc

+1

@ Domezchoc: Какие старые браузеры? В IE есть решение, использующее ['TextRange'] (http://msdn.microsoft.com/en-us/library/ie/ms535872%28v=vs.85%29.aspx), что легко, текстовый узел является единственным дочерним элементом элемента. В противном случае все еще возможно, но больше работы по созданию TextRange. –

+0

Я имею в виду IE, я понял. сначала мне нужно найти TextRange, а затем getClientRects. thank – Domezchoc

Смежные вопросы