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