使用rangy-position.js获取所选文本的x-y位置

时间:2014-06-30 13:48:01

标签: javascript html range rangy getselection

我试图找到我所选择起点的x-y位置。 我曾尝试使用rangy-position.js(http://rangy.googlecode.com/svn/trunk/demos/position.html)并且还包含了它所需的支持js文件。

以下是我在网页上提供的脚本。

<script type="text/javascript">

    function showSelectionPosition() {
         var wholeSelRectEl, startSelEl, endSelEl;
        // Draw an element representing the whole selection rectangle
        var wholeSelRect = rangy.getSelection().getBoundingDocumentRect();

        //removeSelectionIndicators();

        if (!wholeSelRect) {
            return;
        }
        var startPos = rangy.getSelection().getStartDocumentPos();


        alert("y pos:" + startPos.y);

        var endPos = rangy.getSelection().getEndDocumentPos();
    } 

</script> 

在mouseup上,showSelectionPosition()的调用如下:

$('#container').mouseup(function(f) {
    showSelectionPosition();

});

还要注意#container中包含很多div元素,它们最终都有我想要选择的文本。 问题是我收到以下错误:

Uncaught TypeError: Cannot read property 'y' of null

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

将选区放在一个范围内,然后在其上使用getBoundingDocumentRect()。

var sel = rangy.getSelection();
var range = sel.getRangeAt(0).cloneRange();
var rect = range.getBoundingDocumentRect();
alert("y pos:" + rect.top);