Преобразование Range или DocumentFragment в строку

Есть ли способ получить 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?

20
задан Julian 12 April 2017 в 10:41
поделиться