2012-04-02 41 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; 
    } 
}