可编辑的状态
所见即所得编辑器生成的标记非常糟糕。它充满了样式属性,通常甚至不是有效的 HTML(缺少结束标签、重叠样式等)。是否有任何既定的解决方案来解决由 引入的问题contenteditable
?如果没有,我该如何创建一个?
无效的 HTML
例如,在一个流行的富文本编辑器中输入一个无序列表和一行文本后,我会看到以下 HTML:
<ul><li>foo</li><li>bar</li></ul><div>baz
div
标签是从哪里来的?为什么不关门?为什么不是一个段落——当然是正确关闭的?这可以预防吗?
非语义 HTML
另一位编辑制作了以下内容:
<p style="font-size:11pt; line-height:115%; margin:0pt 0pt 0pt 36pt; text-indent:-18pt"><span style="color:#000000; font-family:Arial; font-size:11pt; font-style:normal; font-weight:normal; text-decoration:none">●</span><span style="font:7.0pt 'Times New Roman'"> </span><span style="color:#000000; font-family:Arial; font-size:11pt; font-style:normal; font-weight:normal; text-decoration:none">Lorem</span></p><p style="font-size:11pt; line-height:115%; margin:0pt 0pt 0pt 36pt; text-indent:-18pt"><span style="color:#000000; font-family:Arial; font-size:11pt; font-style:normal; font-weight:normal; text-decoration:none">●</span><span style="font:7.0pt 'Times New Roman'"> </span><span style="color:#000000; font-family:Arial; font-size:11pt; font-style:normal; font-weight:normal; text-decoration:none">ipsum</span></p>
这是有效的标记,但它在语义上很糟糕!编辑器插入了文字项目符号而不是样式化的无序列表。作为开发人员,我不知道如何处理生成的标记contenteditable
。就造型而言,它完全没用。
换人
直到最近,我一直在使用 Markdown 作为从用户那里生成语义正确的 HTML 的工具。但是,Markdown 缺少我的用户所要求的某些功能(非技术人员的易用性、图像定位等)。在寻找了一个所见即所得的编辑器,它可以在几周内产生有效的语义标记,我发现这contenteditable
使得这变得不可能。有人在谈论这些问题的解决方案吗?我怎么能参与进来。
[更新] 澄清
我想我之前并没有完全清楚。我不是在寻求解决contenteditable
问题的方法。我找到了很多,包括下面提到的大部分。我试图找到的是这些问题的根本原因。为什么contenteditable
这么破?是因为技术问题还是遗留代码问题?此外,正在采取什么措施来修复它,这项工作在哪里完成?
[更新]谷歌文档
上面第二个示例中的 HTML 来自 Google 文档编辑器。但是,正如AlfonsoML在下面指出的那样,Google Docs 并没有contenteditable
在他们的编辑器中使用。他们的技术在这里解释。