首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有比document.execCommand更好的东西吗?

有比document.execCommand更好的东西吗?
EN

Stack Overflow用户
提问于 2012-09-03 16:52:05
回答 3查看 11.9K关注 0票数 24

在实现基于web的富文本编辑器时,我看到document.execCommand对于对HTML执行操作非常有用(比如选择粗体)。不过,我需要一些更好的东西。具体来说,我需要确切地知道从innerHTML中添加或删除了什么文本,以及在哪个位置(作为对整个文档的HTML表示的偏移量)。

我考虑在DOM4 4的突变观察器旁边使用内置的document.execCommand,但execCommand似乎不能胜任这项任务:

  • 我看不出有什么“不大胆”的选择
  • 生成的html似乎因浏览器而异。(我希望< span >标记而不是,但一致性更重要)
  • 也没有关于如何处理冗余嵌套/相邻< span >标记的信息。

而且,根据我的需要,使用变异观察者似乎有点过分。

我的动机是:我试图定期地将文档更改传输到服务器,而不重新传输整个文档。我将数据作为HTML表示上的插入和删除的集合发送。如果有人知道如何摆脱这个功能,比如CKEditor (所以我不需要从头开始),那么我将永远爱你。

注意:执行文本差异不是一个选项,因为它在非常大的文档上性能很差。

否则,我并不害怕尝试写这样的东西。DOM的range对象提供的方法将处理大量的繁重工作。我也希望得到关于这种可能性的建议。

EN

回答 3

Stack Overflow用户

发布于 2012-09-16 21:17:18

除了使用execCommand之外,还有一种选择--实现编辑器的整个交互,包括光标的闪烁。而且已经做到了。谷歌在文档中这样做,但也有一些免费和开源的东西。Cloud9 IDE http://c9.io有一个实现。AFAIK,github使用这个编辑器已经有一段时间了。在这种情况下,您当然可以做任何事情,因为在execCommand中不涉及任何本机代码。

回购程序在这里:https://github.com/ajaxorg/cloud9 (它包含整个IDE,您需要为编辑器找到代码。)

同样的突变事件是不推荐的。如果可以删除对旧浏览器的支持,请尝试突变观测器。如果没有,请尽量避免检测DOM更改,并拦截编辑器实现中的更改。这可能也是新浏览器的发展方向。

票数 13
EN

Stack Overflow用户

发布于 2017-11-30 20:33:41

特里克斯富文本编辑器,从他们的描述来看,避免不一致的execCommand是整个项目的重点。

票数 7
EN

Stack Overflow用户

发布于 2021-01-21 21:06:49

看来新的标准将是输入事件级别2。在我看来,这将是execCommand的一个改进版本。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12251629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档