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