2010-09-22 24 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. 
相关问题