发布网友 发布时间:2022-04-22 16:40
共1个回答
热心网友 时间:2023-10-21 23:55
主要是对 DOM 的处理存在兼容性问题,所以要实现一个功能完备的富文本编辑器非常麻烦。
现在的 WYSIWYG 主要用 contentEditable 来实现,例如要对选中的文本进行操作(如加粗、字号),需要先判断光标的位置,用 Range 判断选中的文本在哪里,然后判断这段文本是不是已经被处理过,需要覆盖、去掉还是保留原效果,这里还有可能涉及到标签的嵌套,例如
<b>aa<i>a</i></b><i>bbbb</i>cccc
如果用户选择了 abbbbcc 这段文字加粗,应该怎么做?如果用户跨节点边界选择文本按了退格键,表现出的行为很大可能和你的预期是不一样的,光是处理这其中的逻辑就已经很复杂了。还不用说要实现像撤销这样的操作必须手动进行 history 栈的管理、对用户的输入进行转义、拖拽上传操作、Latex 公式支持之类。