2009-09-22 5 views

답변

6

<span>에 텍스트 노드를 줄이면 해당 범위의 boundingRect이 표시됩니다. 당신은 IE8 이상을 지원할 필요가없는 경우

var span = document.createElement('span'); 
textNode.parentNode.insertBefore(span, textNode); 
span.appendChild(textNode); 
var rect = span.getBoundingClientRect(); 
10

, 당신은 Rangeselect the text node에를 사용하고 Range에서 직접 경계 RECT를 얻을 수 있습니다.

예 (이 페이지에서 작동한다) :

var text = document.getElementById('nav-questions').childNodes[0]; 
var range = document.createRange(); 
range.selectNode(text); 
var rect = range.getBoundingClientRect(); 
range.detach(); // frees up memory in older browsers 

당신은 또한 여러 텍스트 노드에 대해이를하고있는 경우 Range 개체를 다시 사용할 수 있습니다; 완료 될 때까지 range.detach()으로 전화하지 않도록하십시오. (참고 : Range.detach()은 이제 the DOM standard의 no-op입니다. 이전 브라우저는 호출 후에 범위 사용을 여전히 사용하지 않습니다.)

+1

네비게이터에서 작동하는지 테스트하려면 : document.implementation.hasFeature ('Range ','2.0 '); – Noyo