3

有没有办法将sharejs与 contenteditable-Elements 一起使用,例如<div contenteditable="true">Content <b>with html</b></div>其中的 HTML-Content?

或者还有其他将操作转换 (OT) 与 HTML-Content 或 Rich-Text 结合使用的最佳实践吗?用 node.js 怎么能做到这一点?

4

1 回答 1

1

可以在诸如 DOM 树之类的树上定义 OT 算法。我为 DOM 操作编写了一个符合 shareJS 的 OT 类型:https ://github.com/marcelklehr/dom-ot

不过,请谨慎使用。即使它有效,但问题是同步原始 DOM 是否是一个好主意,并且真的是你想要的。许多浏览器在其 DOM 实现方面,尤其是在处理 contenteditable 元素方面存在各种怪癖。

另一种方法是依靠浏览器内的富文本编辑器来提供 OT 互操作性。例如,CKeditor 团队目前正在为 v5设计这样的功能。ProseMirror提倡并支持类似于版本控制系统中的变基和转换方案(与 OT 的不同之处在于,如果您以不同的顺序应用编辑,则副本不能保证收敛)。

于 2016-04-01T22:05:51.400 回答