SurroundContents в диапазоне, охватывающем несколько тегов (проблема getRangeAt?)
-
06-07-2019 - |
Вопрос
У меня есть скрипт, который (я думаю) должен использоватьroundContents, чтобы обернуть область выбора. Это позволяет мне добавить что-то, а затем переназначить диапазон в качестве выделения.
Я считаю, что сузил проблему до неправильного использования getRangeAt, но я не совсем уверен, как ее исправить.
Вот краткий код:
function getRangeObject(selectionObject) {
// Moz
if (selectionObject.getRangeAt) {
return selectionObject.getRangeAt(0);
}
А вот строка 89, в которой выдается ошибка:
rangeObject.surroundContents(newNode);
И, конечно же, вот ошибка:
Ошибка: необработанное исключение: [Исключение ... »Граничные точки диапазон не соответствует конкретным . Требования & Quot; код: "1" nsresult: & Quot; 0x805c0001 (NS_ERROR_DOM_RANGE_BAD_BOUNDARYPOINTS_ERR) & Quot; место нахождения: " http://www.latentmotion.com/insertNode/index26.html Строка: 89 "]
Если полезно увидеть все это, вы можете посмотреть сценарий (пока) здесь: http://www.latentmotion.com/insertNode/index26.html
И помощник по выделению текста, из которого я уходил, был quirksmode - который не детализирует использование нескольких диапазонов, находится здесь .
Заранее благодарим за помощь.
Решение
Я думаю, что сообщение об ошибке хорошо описывает проблему. Этот раздел Спецификация диапазона DOM описывает, что приводит к исключению, генерируемому Range
при использовании roundContents
.