2010-11-10 115 views

回答

2

Firefox擁有Range對象,而不是在的TextRange IE - https://developer.mozilla.org/en/DOM/range

從第一次看我沒有看到,返回座標的方法,但他們有一些會在4.0,這可能有助於:

https://developer.mozilla.org/en/DOM/range.getBoundingClientRect

返回ClientRect對象 界限的範圍的內容;此 一個矩形,該範圍內包含所有 元素的邊界矩形的聯合。

您也可以看看這裏: https://developer.mozilla.org/en/DOM%3aElement.getClientRects

返回的值是 ClientRect對象,一個與 元素關聯的每個CSS 邊界框的集合。每個ClientRect對象 包含只讀左,上,右 和描述 邊界框,在像素底的特性,與 左上角相對於左上的 視口中,除非該元素是 內的SVG異物對象元素 ,在這種情況下,左上角是相對於最近的異物對象 以及該對象的座標系中的相對位置 。對於帶有 字幕的表,即使在 表格的邊框之外,字幕也包含在內,即使是 。

最初,微軟希望這種方法爲每行文本返回一個TextRectangle 對象。然而, CSSOM工作草案指定 它返回每個 邊框的ClientRect。對於內聯元素, 兩個定義是相同的。但對於 塊元素,Mozilla將僅返回 只有一個矩形。

選擇:

IE:

var range = document.body.createTextRange(); 
range.moveToElementText(myDiv); 
range.select(); 

Firefox,歌劇,,WebKit Nightlies版:

var selection = window.getSelection(); 
var range = document.createRange(); 
range.selectNodeContents(myDiv); 
selection.removeAllRanges(); 
selection.addRange(range); 

Safari瀏覽器:

var selection = window.getSelection(); 
selection.setBaseAndExtent(myDiv, 0, myDiv, 1); 
+0

我需要FF 3+​​,有沒有辦法選擇內部文本? – Himberjack 2010-11-10 16:45:05

+0

在選擇每個字母並讀取它們的偏移量時,似乎字母'o'和'F'的屬性之間沒有區別。有沒有解釋這個?我試圖獲得每個字母的座標...(每個字母的頂部像素) – Himberjack 2010-11-10 17:05:45

+0

它可能會告訴選區覆蓋的正方形的座標,並且它看起來對於所有字母都是相同的,無論大寫還是不是。我不確定你能在瀏覽器中獲得標誌符號座標,如果可能的話,最好使用SVG。 – 2010-11-10 17:13:31