Найти начальный и конечный индекс выбранного текста с помощью JavaScript

У меня есть одна страница ePub Book XHTML с множеством тегов p(paragraph).

Теперь я получаю выделенный текстовый индекс по отношению к тегу body с помощью функции ниже в JS:

var fullString = document.getElementsByTagName("body")[0].textContent;
if (window.getSelection) 
{               
    var range = window.getSelection ();                     
    var startPosition = fullString.search(range);
    var getPosition = range.toString();
    var endPosition = parseInt(getPosition.length) + parseInt(startPosition);
    alert("Start position if : " + startPosition + " and End position : " + endPosition);
    start_position = startPosition;
    end_position = endPosition;                               
}

Он возвращает мне правильный индекс, в то время как выбор находится только в одном теге P.

Но поскольку выбор охватывает более одного тега p, я получаю начальную позицию как «-1».

Не могли бы вы помочь мне выбраться из этого?


person user1113191    schedule 27.12.2011    source источник


Ответы (1)


Пожалуйста, попробуйте строку ниже, и она заработает.

диапазон переменных = окно.getSelection().getRangeAt(0);

Надеюсь, это решит вашу проблему.

person AmGates    schedule 28.12.2011
comment
AmGates, я использовал это до того, как реализовал приведенный выше код. Проблема с вашим предложением заключается в том, что оно даст мне диапазон в соответствии с тегом абзаца, а не в соответствии со всем текстом в моем теге body. - person user1113191; 02.01.2012
comment
Привет, я пробовал этот код. Я не понял, что ты пытаешься сказать. - person AmGates; 02.01.2012