2011-12-23 38 views
2

我有一個div標籤,裏面有一堆文本。JavaScript獲取最接近點擊字符的頁面座標

<div>Lots of text in here</div> 

我正在偵聽來自div的onclick事件。我想在用戶點擊div的任何地方插入假文本光標。我可以很容易地得到什麼字符被點擊:

var sel = window.getSelection(); 
sel.focusOffset; 

但我不知道如何獲得該字符的像素座標。

回答

3

rangy庫有一個功能,完全是這樣 - 找到選擇的像素位置。看看這個演示:http://rangy.googlecode.com/svn/trunk/demos/position.html

圖書館主頁:http://code.google.com/p/rangy/

一旦你使用瘦長得到的像素位置,你可以動態地添加絕對定位的DIV(或重新定位現有DIV),以這些座標。

+0

那麼,rangy是否在選擇範圍的開始/結尾添加了一個虛擬元素,並從元素中獲取座標?還是以另一種方式做它?我真的只需要使用選擇/範圍來完成這一件事,因此必須包含整個圖書館將是一件恥辱。 – Azmisov

+0

我不認爲rangy這樣做。它會給你一些線條,你用這些線條做什麼取決於你。但是一旦你有了這些座標,添加/顯示一個虛擬元素(對於遊標)應該是直截了當的。如果你不想包括整個庫,你可能想看看它的來源,看看它如何確定coords。有一點需要考慮的是,rangy似乎在很多瀏覽器中都經過了很好的測試,從穩定性的角度來看,它可能比定製代碼更好。 – techfoobar

+0

好的,謝謝。 – Azmisov