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