Использование sharejs с contenteditable элементами
Есть ли способ использовать sharejs вместе с contenteditable-элементами вроде <div contenteditable="true">Content <b>with html</b></div>
с HTML-контентом в нем?
Или существуют другие лучшие практики для Оперативного преобразования (OT) в сочетании с HTML-контентом или Rich-Text? Как это можно сделать с помощью node.js?
1 ответ
Можно определить алгоритм OT на деревьях, таких как деревья DOM. Я написал совместимый с shareJS OT-тип для операций DOM: https://github.com/marcelklehr/dom-ot
Используйте это с осторожностью, хотя. Несмотря на то, что это работает, вопрос в том, является ли хорошая синхронизация DOM хорошей идеей и действительно то, что вы хотите. У многих браузеров есть свои причуды, связанные с реализацией DOM, особенно при работе с contenteditable элементами.
Другой подход заключается в использовании встроенного текстового редактора в браузере для обеспечения взаимодействия OT. Например, команда CKeditor в настоящее время разрабатывает такую функцию для v5. ProseMirror поддерживает и поддерживает схему перебазирования и преобразования, аналогичную той, которая используется в системах контроля версий (отличие от OT состоит в том, что реплики не гарантированно сходятся, если вы применяете правки в разных порядках).