2012-04-02 54 views
1

我正在尝试保存用户在网页中突出显示的文本的相关信息。目前,我使用下面显示的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

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