如何使用javascript获取所选文本结尾的坐标?

时间:2010-09-22 08:42:37

标签: javascript firefox getselection

我的问题类似于this,但我需要一种方法来在Firefox中使用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);

这给出了选择开始的坐标。有没有办法检索选择结束的坐标?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

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