2010-09-22 117 views
6

我的問題類似於this,但我需要一種方法來在Firefox中使用Javascript獲取選區右側的座標。我做了一個小例子來說明我的意思:如何使用javascript獲取選定文本的結尾座標?

alt text

我從其他後得到的代碼如下:

var range = window.getSelection().getRangeAt(0); 
var dummy = document.createElement("span"); 
range.insertNode(dummy); 
var box = document.getBoxObjectFor(dummy); 
var x = box.x, y = box.y; 
dummy.parentNode.removeChild(dummy); 

這給了我選擇的頭的座標。有沒有辦法檢索選區末尾的座標?

回答

9

是的。這一點很簡單:您只需在從選擇中獲得的範圍上撥打collapse(false)即可。要知道,document.getBoxObjectFor()現在已經從Mozilla的去除,所以你需要將啞元的getBoundingClientRect()方法來代替:

var range = window.getSelection().getRangeAt(0); 
range.collapse(false); 
var dummy = document.createElement("span"); 
range.insertNode(dummy); 
var rect = dummy.getBoundingClientRect(); 
var x = rect.left, y = rect.top; 
dummy.parentNode.removeChild(dummy); 
+0

+1爲3秒快速。我不知道* getBoxObjectFor()*已經被刪除。 – 2010-09-22 08:53:22

+1

我記得那是因爲幾個月前MooTools破壞了,因爲它正在使用'getBoxObjectFor()'(它從來沒有使用過的方法)的嗅探來檢測Mozilla。 – 2010-09-22 08:56:42

+0

collapse(false)正是我正在尋找的東西。非常感謝。你幫了我很多。 – Bob 2010-09-22 11:46:10

0
var r = range.cloneRange(); 
r.collapse(false); // collapses range clone to end of original range 
r.insertNode(dummy); 
// document.getBoxObjectFor(dummy), etc. 
相關問題