Программно выбрать текст в текстовой области в IE 8

Я пытался выбрать текст в текстовой области программно на основе начального и конечного индексов, но по какой-то причине выбор смещается на несколько символов:

Мои пользователи делают первоначальный ручной выбор, который я сохраняю в базе данных. Чтобы получить начальные/конечные позиции начального выбора, я использую подход, описанный здесь Позиция курсора в текстовой области, в символах с начала (Ответ Тима Дауна)

Я сохраняю выбор, сделанный пользователями, и когда они возвращаются на страницу, я хочу по умолчанию использовать их предыдущие выборы.

Мой код для выбора на основе сохраненных позиций, которые я извлек с помощью функции Тима Дауна, выглядит следующим образом:

  function SelectText(start,end) {
    var textArea = document.getElementById("textArea");

    var inputRange = textArea.createTextRange();
    inputRange.collapse(true);

    inputRange.moveStart("character", start);
    inputRange.moveEnd("character", end - start);

    inputRange.select();
}

Похоже, проблема вызвана разрывами строк/пробелами. Кто-нибудь знает, как правильно сделать выбор в IE программно на основе начала и конца?


person TGH    schedule 25.10.2012    source источник
comment
Похоже, выделение смещено на один символ за разрыв строки   -  person TGH    schedule 26.10.2012
comment
IE (и Windows в целом) представляет разрывы строк двумя символами: \r\n (не уверен в порядке). Таким образом, вы можете сначала заменить любую последовательность этих двух символов одной новой строкой \n перед созданием диапазона   -  person RobG    schedule 26.10.2012


Ответы (1)


Я точно не знаю, поможет ли это вам, но вы можете попробовать использовать js-библиотеку RangyInputs, разработанную Тимом Дауном и доступную по следующему адресу: http://code.google.com/p/rangyinputs/

Что касается меня, я использовал библиотеку Rangy (которая также разработана Тимом Дауном) для редактируемого содержимого div в одном из моих проектов, и она действительно хорошо работает и мне очень помогла.

Документацию по поддерживаемым методам вы можете найти на странице WiKi: http://code.google.com/p/rangyinputs/wiki/Documentation

person Maxim Kornilov    schedule 26.10.2012
comment
Спасибо. Я проведу еще несколько тестов этой библиотеки, но она выглядит многообещающе. - person TGH; 29.10.2012