1

我正在尝试包含使用户能够突出显示文本并返回该文本的功能。我还想在#textcontainer div 中返回该文本的位置。

我的问题:如果用户在下面的文本中突出显示第二个“和”,位置将等于 div 中的第一个“和”而不是第二个的 indexOf。如何更改此设置以使位置返回第二个“和”(突出显示的那个)的位置?

    <div id = 'textcontainer'>
        and second third and
    </div>


     // beginning of highlight js
    $('#highlight').click(function (e) {
        e.preventDefault();

        // get highlighted text
        var selection = window.getSelection();
        var txt = selection.toString();
        console.log(txt);

        fulltext = $("#textcontainer").text();
        console.log(fulltext);

        position = fulltext.indexOf(txt);
        console.log(position);

    })
  // end of highlight js
4

1 回答 1

2

您很幸运,因为window.getSelection()返回了一个Selection对象,该对象又具有一个getRangeAt方法,您可以像这样使用它:

var selection = window.getSelection();
var range = selection.getRangeAt(0);

var start = range.startOffset, end = range.endOffset;

编辑:请注意,IE 具有完全不同的选择 API。对于跨浏览器的兼容性,您可能想看看Rangy(注意:我对这个库没有任何经验)。

编辑 2:查看一些 jQuery 插件的这个答案

于 2013-05-06T13:13:23.950 回答