2009-09-22 98 views

回答

6

將文本節點包裝在<span>中,獲取該跨度的boundingRect

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

如果您不需要支持IE8或以上,你可以使用一個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中,儘管舊版瀏覽器在調用之後仍然會禁用該範圍。)

+1

要測試此功能是否可以在您的導航器中運行:'document.implementation.hasFeature('Range ','2.0');' – Noyo 2015-02-11 14:50:27

相關問題