CKEditor 4和非标准HTML元素

CKEditor 4和非标准HTML元素,html,ckeditor,Html,Ckeditor,下面是我定义的一个非标准HTML元素(AngularJS使这变得简单): 这是讲座的课文 如果在HTML文档中使用此元素,则每次从CKEditor的呈现模式切换到源模式时,都会在文档中的每个块元素之间添加一个新的空段落: <p>&nbsp;</p> 第二次切换时,我得到两个插入: <p>&nbsp;</p> <p>&nbsp;</p> 第三次切换时,在每个块级元素之间插入三次,以此

下面是我定义的一个非标准HTML元素(AngularJS使这变得简单):


这是讲座的课文

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

<p>&nbsp;</p>

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

<p>&nbsp;</p>

<p>&nbsp;</p>

第三次切换时,在每个块级元素之间插入三次,以此类推:

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>


有人能推荐一种解决方法吗?

Pekka的问题很好-为什么需要将自定义元素加载到CKEditor中?浏览器(做所见即所得编辑的一部分)和CKEditor(做另一部分)都不知道如何处理此元素、它的含义、如何呈现它以及编辑功能应该如何处理它。例如,如果我理解了您的问题,您在文章中提到它是一个块元素。CKEditor和浏览器如何知道它是块元素|

第二件你应该了解的事情是,CKEditor不是一个所见即所得的网站建设者,而是一个“文档”编辑器。它的内容必须对它有意义,而标签不会有意义

无论如何,如果你必须走这条路,你可以做一些事情

这里有两个答案可以让你知道你能做什么


如果您决定不保护
标记的源代码,而是呈现它们,那么您还应该了解
CKEDITOR.dtd
对象,我在这里简要介绍了它:。

Pekka的问题很好-为什么需要将自定义元素加载到CKEDITOR中?浏览器(做所见即所得编辑的一部分)和CKEditor(做另一部分)都不知道如何处理此元素、它的含义、如何呈现它以及编辑功能应该如何处理它。例如,如果我理解了您的问题,您在文章中提到它是一个块元素。CKEditor和浏览器如何知道它是块元素|

第二件你应该了解的事情是,CKEditor不是一个所见即所得的网站建设者,而是一个“文档”编辑器。它的内容必须对它有意义,而标签不会有意义

无论如何,如果你必须走这条路,你可以做一些事情

这里有两个答案可以让你知道你能做什么


如果您决定不保护
标记的源代码,而是呈现它们,那么您还应该了解
CKEDITOR.dtd
对象,我在这里简要介绍了它:。

避免自定义元素似乎更容易,因此我使用了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之间的更大集成将不断发展。

避免自定义元素似乎更容易,因此我使用了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之间可能会有更大的集成。

为什么需要组成HTML元素?它的作用是什么?它是如何实现的?将普通元素与特定类一起使用不是可行的选择吗?我不打算讨论这个问题,我想这是你的葬礼。我认为这会给CKEditor带来更多的麻烦。我会考虑一个占位符元素(很容易在编辑后转换成<代码> <代码>元素)为什么需要编译一个HTML元素?它的作用是什么?它是如何实现的?将普通元素与特定类一起使用不是可行的选择吗?我不打算讨论这个问题,我想这是你的葬礼。我认为这会给CKEditor带来更多的麻烦。我会考虑占位符元素(在编辑后很容易转换成<代码> <代码>元素)