【问题标题】:How to get the coordinates of the end of selected text with javascript?如何使用javascript获取所选文本末尾的坐标?
【发布时间】:2011-04-15 14:53:18
【问题描述】:

我的问题类似于this,但我需要一种方法来在 Firefox 中使用 Javascript 获取选择右侧的坐标。我做了一个小例子来说明我的意思:

我从其他帖子中得到的代码如下:

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);

这给了我选择开始的坐标。有什么方法可以检索选择结束的坐标吗?

【问题讨论】:

    标签: javascript firefox getselection


    【解决方案1】:
    var r = range.cloneRange();
    r.collapse(false); // collapses range clone to end of original range
    r.insertNode(dummy);
    // document.getBoxObjectFor(dummy), etc.
    

    【讨论】:

      【解决方案2】:

      是的。这一点很简单:您只需要在从选择中获得的 Range 上调用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 表示快了 3 秒。我不知道 getBoxObjectFor() 已经被删除了。
      • 我记得几个月前 MooTools 崩溃了,因为它使用嗅探getBoxObjectFor() 检测 Mozilla(据我所知,这是一种从未使用过的方法)。
      • collapse(false) 正是我正在寻找的。太感谢了。你帮了我很多。
      猜你喜欢
      • 2011-02-06
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 2011-11-22
      • 1970-01-01
      相关资源
      最近更新 更多