Показать сообщение отдельно
  #1 (permalink)  
Старый 17.09.2011, 05:30
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Как получить и установить начало и конец выделения?
У меня есть див с атрибутом contenteditable и некоторым текстом. Человек выделяет текст и, например, нажимает на какую-нибудь кнопку, при этом теряется фокус в диве. Затем, после нажатия, выделение нужно восстановить. Причем, должно работать в IE8 и, желательно IE7.

К сожалению, информация в интернете разбросана по кускам, поэтому приходится довольствоваться чем есть. Пока что есть код, который должен работать в нормальных браузерах, но почему-то кидает исключение:

//получение данных о выделении для его восстановления
selection = document.getSelection();
range = selection.getRangeAt(0);
startNode = range.startContainer.parentNode;
endNode = range.endContainer.parentNode;
startOffset = range.startOffset;
endOffset = range.endOffset;

//установка такого же выделения
range = document.createRange();
range.setStart(startNode,startOffset); //исключение здесь "INDEX_SIZE_ERR: DOM Exception 1"
range.setEnd(endNode,endOffset); //и, соответственно здесь, если убрать предыдущую строку

Помогите, пожалуйста, разобраться с этим исключением и созданием кода с аналогичным функционалом, но для IE.

Спасибо.
Ответить с цитированием