CKEditor 4和非标准HTML元素

时间:2013-08-31 21:45:57

标签: html ckeditor

这是我定义的非标准HTML元素(AngularJS使这很简单):

<exercise id="Sample Exercise" language="Scala" lectureId="5437"> This is the text of the lecture </exercise>

如果我在HTML文档中使用此元素,则每次从CKEditor的渲染模式切换到源模式时,都会在文档中的每个块元素之间添加一个新的空段落:

<p>&nbsp;</p>

第二次切换时,我得到两次插入:

<p>&nbsp;</p>

<p>&nbsp;</p>

第三次切换时,我在每个块级元素之间得到三次插入:

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

有人可以建议解决方法吗?

2 个答案:

答案 0 :(得分:1)

Pekka的问题非常好 - 你为什么需要在CKEditor中加载自定义元素?浏览器(完成WYSIWYG编辑的一部分)和CKEditor(另一部分)都不知道如何处理这个元素,它意味着什么,如何渲染它以及如何编辑它们。例如,如果我理解了您的问题,那么您写的是<exercise>它是一个块元素。 CKEditor和浏览器如何知道它是一个块元素? :|

您应该了解的第二件事是CKEditor不是WYSIWYG网站构建者,而是“文档”编辑器。它的内容必须具有它的含义,并且该标签不具备它。

无论如何,如果你必须这样做,你可以做一些事情。

以下两个答案可以让您了解自己可以做些什么:CKEditor strips <i> Tag

如果您决定不保护<exercise>代码的来源,但要渲染它们,那么您还应该了解CKEDITOR.dtd对象,我在此简要介绍过:{{3} }。

答案 1 :(得分:-1)

避免使用自定义元素似乎更容易,因此我使用了HTML5数据属性。

<div class="exercise" data-id="Challenge #42" data-language="Scala" data-lectureid="5437">
  <p>Create a program that outputs the meaning of life, the universe, and everything.</p></div>

这就解决了。也许CKEditor和AngularJS之间的更大整合会随着时间的推移而发展。