我已经尝试了一些HTML编辑器,包括TinyMCE的,CKEditor的,现在NicEdit。 NicEdit是在某一方面好 - 这是非常容易定制。 然而,我发现,他们都产生HTML非常差的趋势。 未必如此,而是因为他们没有做很多正确解释无效的用户动作,比如试图风格的东西,而没有首先做出选择。
这是太容易与包含有类似HTML落得
<span style='color:#ff0000'><span style='color:#ff0000'><span style='color:#ff0000'>Red</span></span></span>
我是正确的思维,这是相当多的内容编辑概念的限制? 可怜的HTML并没有多大关系,如果目的是电子邮件或论坛,如该职位,但得到相当不舒服住在一起,如果生成的HTML在网页的上下文中使用。 如果这一切是正确的有什么选择? 也许一个基于Flash的产生更好的HTML和解释用户想要做什么工作更难插件编辑器?
我想这将在原则上是可能的研究产生的输出,如果需要清理concertina'd跨度之间的一切,但就是容易是相当的承诺。
一开始,我要指出,我是一个CKEditor的核心开发人员,因此我的观点可能并不完全客观:)。
HTML编辑AFAIK的状态没有改变过去的几年。 浏览器厂商已经花了一点时间修正错误-如此之少,大多数上最古老的虫子CKEditor的TRAC是由浏览器的问题造成的仍然有效,最让我们曾经创建过黑客仍然需要。 我并不仅仅意味着IE 7或8,我们仍然支持,因为其实IE可以不是最糟糕的。 我没有检查能精确,但我认为,由于在最近的IE版本的DOM API普遍改善,他们可能需要比其他浏览器更小黑客,因为它的编辑支持,似乎是最稳定的,完整。 例如,最丑陋的黑客永远是需要WebKit浏览器(参见: Webkit的错误和封闭CKEditor的车票 ),这bug是5岁的 。 更重要的是 - 这不是一个边缘情况或不可能的情况 - 这个问题使得它不可能创造选择的全范围 - 例如,一个空的内联元素IIRC内。
因此,与一般的网络技术,HTML编辑矗立在那里它在10年前离开。 同样的错误,同样缺少的功能,一样的...标记。 猜猜看是由创建fontName
命令? <font face="">
-是的,不是在开玩笑。 至少浏览器是非常一致的在这里...但一致性很快消失。
怎么样的规范? 有一个草案 ,但它并没有在所有帮助-它只是规范了当前的状态,这是我们所知道看起来并不很好。 而AFAICS,是死的草案。
还有一两件事令我担心 - 在编辑去的方向。 谷歌使用contenteditable
在Gmail中(不,谷歌文档不是建立在contenteditable
),所以它不关心HTML输出。 苹果重用他们的电子邮件应用程序适用于iOS,或许在邮件MacOS的HTML编辑组件(因为我看到相同的特定行为)。 Mozilla的重用雷鸟Gecko和我也不会,如果微软确实在Outlook中同样惊讶。 所有这些不关心HTML输出。 这些发动机都是为了了解每一个废话,而不是修复它,是HTML编辑草案有关它的一切。
由于所有这一切,我们可以看到这样的新问题, 这一个 。 在闪烁/ Webkit的bug报告我总结的一系列不正确的(从我们的POV -开发者谁在乎HTML)按Backspace键时产生。 它的设计看起来不错(尽管事实并非如此),但HTML和编辑的API并不重要。
我不关心这个。 我需要一个编辑器!
对所有的解决方案后,浏览器修复一切和/或由我们自己替换其原生实现。 在过去的1.5年我一直几乎完全在过滤和标准化的输入和输出。 在CKEditor的4.0我们改写了整个粘贴和HTML插入进程和最近发布的CKEditor 4.1我们推出了高级内容过滤器相适应的输入数据到编辑器配置。 所以,少功能被启用时,将较少在HTML被允许。 检查该样本 -尝试粘贴/写/创建蹩脚HTML。
当然,还是有改进的余地。 例如,我们不能够在编辑过程中立即过滤数据。 如果浏览器(如WebKit的)创建了一个烂摊子,我们可以解决这个问题上的输出,但实际上我们还没有决定这样做,因为过滤是非常复杂的过程,可能会破坏性能。 我们限制输入和用户操作有那么一天,我们将执行我们自己的退格键/删除处理,以防止浏览器搞乱我们的HTML。 这是唯一的解决办法,这就是为什么目前只有2或3良好的所见即所得的编辑器。
总之,几乎一切都没有在浏览器的HTML编辑实现改变,但很多已经在所见即所得的编辑器世界变了。 我建议你再次检查他们,如果你立足于从几年前你的经验。
已经花了大量时间试图找到确保我拿到生产高档HTML出一个所见即所得的编辑器,我想我应该在这里分享我的结果运行到这个线程任何人的利益的方式。
非常简短的建议 - 不要浪费你的时间。 内容编辑的编辑们永远不会实现任何东西,甚至远程接近生产高档HTML。 像Reinmar人们所做的工作,大量减少这一点,但它是太容易为用户抛出处理的内容编辑成如痴如醉底层浏览器代码。
您是关通过BBCode标记更好。 100%防弹选项是让用户编辑BB代码,并保持紧密的统治在他/她被允许在任何一点上做。 我在自己的项目中做到了这一点,但与使非技术人员的用户使用任何种类的标记发挥的问题是一个棘手的一个。 把自己的所见即所得界面BB代码编辑是不是一个轻松的工作。 幸运的是,帮助就在手的形式SCEditor 。 山姆在这里完成了出色的工作。 请注意 - 出来的东西也可能包含一些“云雾”位,因为所见即所得位仍然依赖于内容的编辑。 然而,这是比较容易清理。
对于文本编辑,我们可以通过这个使用HTML5的contenteditable属性,我们可以做任何元素编辑https://plus.google.com/114254873085584811912/posts/LqpzvvzoMYc