有没有办法将sharejs与 contenteditable-Elements 一起使用,例如<div contenteditable="true">Content <b>with html</b></div>
其中的 HTML-Content?
或者还有其他将操作转换 (OT) 与 HTML-Content 或 Rich-Text 结合使用的最佳实践吗?用 node.js 怎么能做到这一点?
有没有办法将sharejs与 contenteditable-Elements 一起使用,例如<div contenteditable="true">Content <b>with html</b></div>
其中的 HTML-Content?
或者还有其他将操作转换 (OT) 与 HTML-Content 或 Rich-Text 结合使用的最佳实践吗?用 node.js 怎么能做到这一点?
可以在诸如 DOM 树之类的树上定义 OT 算法。我为 DOM 操作编写了一个符合 shareJS 的 OT 类型:https ://github.com/marcelklehr/dom-ot
不过,请谨慎使用。即使它有效,但问题是同步原始 DOM 是否是一个好主意,并且真的是你想要的。许多浏览器在其 DOM 实现方面,尤其是在处理 contenteditable 元素方面存在各种怪癖。
另一种方法是依靠浏览器内的富文本编辑器来提供 OT 互操作性。例如,CKeditor 团队目前正在为 v5设计这样的功能。ProseMirror提倡并支持类似于版本控制系统中的变基和转换方案(与 OT 的不同之处在于,如果您以不同的顺序应用编辑,则副本不能保证收敛)。