查找突出显示文本的索引

时间:2012-04-02 17:49:33

标签: javascript jquery

我正在尝试保存用户在网页中突出显示的文字信息。目前我正在使用如下所示的getSelection方法:

 var txt = '';
 if (window.getSelection){txt = window.getSelection();}
 else if (document.getSelection){txt = document.getSelection();}
 else if (document.selection){txt = document.selection.createRange().text;}
 else return;

检索突出显示的文本。然后我搜索整个文本正文并存储突出显示文本的索引。 getSelection方法只返回突出显示的文本,因此问题是如果突出显示的文本在文本正文中多次出现,搜索可能会找到错误的文本重复,从而保存错误的索引。

如何确保我保存正确的指数?

谢谢!

1 个答案:

答案 0 :(得分:1)

QuirksMode对此有an article

您可能对此代码感兴趣:

var userSelection;
if (window.getSelection) {
    userSelection = window.getSelection();
}
else if (document.selection) { // should come last; Opera!
    userSelection = document.selection.createRange();
}

var rangeObject = getRangeObject(userSelection);

function getRangeObject(selectionObject) {
    if (selectionObject.getRangeAt)
        return selectionObject.getRangeAt(0);
    else { // Safari!
        var range = document.createRange();
        range.setStart(selectionObject.anchorNode,selectionObject.anchorOffset);
        range.setEnd(selectionObject.focusNode,selectionObject.focusOffset);
        return range;
    }
}