Есть ли способ получить строку html объекта диапазона JavaScript в браузерах, совместимых с W3C?
Например, скажем, пользователь выбирает следующее: Hello <b>World</b>
В качестве строки можно использовать "Hello World", используя метод Range.toString()
.
(В Firefox это также возможно с помощью метода документа getSelection
.)
Но я не могу найти способ получить внутренний HTML.
После некоторого поиска я обнаружил, что диапазон может быть преобразован в объект DocumentFragment
.
Но DocumentFragments
не имеет свойства innerHTML
(по крайней мере, в Firefox, не пробовал Webkit или Opera).
Что мне кажется странным: было бы очевидно, что должен быть какой-то способ доступа к выбранным предметам.
Я понимаю, что я могу создать DocumentFragment
, добавить фрагмент документа к другому элементу, а затем получить innerHTML
этого элемента.
Но этот метод автоматически закрывает любые открытые теги в выбранной области.
Кроме того, существует очевидный "лучший способ", чем привязать его к dom, чтобы получить его как строку.
Итак, как получить строку html диапазона или DocFrag?