我是CKEditor的新手。我正在尝试构建一个插件,插入一个包含一些自定义内容的新div元素。用户必须在编辑器中只看到一个伪元素,表示通过createFakeElement()函数创建的真实生成的html内容。
这是插件的onOk()函数:
onOk: function () {
var dialog = this,
data = {},
container = editor.document.createElement('div');
this.commitContent(data);
container.addClass('insert').setHtml(data.htmldata);
var fakeElement = editor.createFakeElement(container, 'insert', 't_insert', false);
editor.insertElement(fakeElement);
}
问题在于,当我在编辑器中插入fakeElement时,我可以在源视图中看到我的div被
标记包围:
<p>
<div class="insert">...</div>
</p>
当我第二次重新打开源视图时,ckeditor会清除代码,然后它看起来像这样:
<p> </p>
<div class="insert">...</div>
<p> </p>
当我尝试插入真实元素('容器'变量)时,一切正常,没有
标签添加到源,问题似乎与假元素有关。 / p>
您是否知道在编辑器中插入假元素时为什么会将这些
标记添加到源中?
答案 0 :(得分:1)
我不确定插件和ckeditor,但通常浏览器和可能的编辑器不允许内联元素包含块元素,因此段不能划分里面。
P元素代表一个段落。它不能包含块级 元素(包括P本身)。
我们不鼓励作者使用空P元素。用户代理应该 忽略空P元素。