При реализации веб-редактора форматированного текста я прочитал, что document.execCommand
полезен для выполнения операций с HTML-документом (например, выделение жирным шрифтом). Тем не менее, мне нужно что-то немного лучше. В частности, мне нужно точно знать, какой текст добавляется или удаляется из innerHTML и в каком месте (как смещение в HTML-представлении всего документа).
Я рассматривал возможность использования встроенного document.execCommand вместе с наблюдателем мутаций DOM4, но execCommand не подходит для этой задачи:
- Я не вижу способа "снять выделение жирным шрифтом"
- сгенерированный html, кажется, варьируется от браузера к браузеру. (Я бы хотел, чтобы теги ‹ span > не ‹ b >, но последовательность важнее)
- и нет информации о том, что он делает для обработки избыточно вложенных/смежных тегов ‹ span >.
Кроме того, использование наблюдателя за мутациями кажется немного излишним, исходя из моих потребностей.
Моя мотивация: я пытаюсь периодически передавать изменения документа на сервер без повторной передачи всего документа. Я отправляю данные в виде набора вставок и удалений в представлении HTML. Если кто-то знает способ получить эту функциональность, скажем, из CKEditor (чтобы мне не пришлось начинать с нуля), то я буду любить вас вечно.
Примечание. Выполнение сравнения текста не является вариантом из-за низкой производительности при работе с очень большими документами.
В противном случае я не совсем боюсь пытаться написать что-то, что делает это. Методы, предоставляемые объектом диапазона DOM, справятся с большим количеством тяжелой работы. Я также был бы признателен за совет относительно этой возможности.