Ckeditor插件:在</p>之前和之后插入假元素添加不愿意的<p>标签

时间:2015-04-10 13:13:44

标签: javascript plugins ckeditor

我是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>&nbsp;</p>
<div class="insert">...</div>
<p>&nbsp;</p>

当我尝试插入真实元素('容器'变量)时,一切正常,没有

标签添加到源,问题似乎与假元素有关。 / p>

您是否知道在编辑器中插入假元素时为什么会将这些

标记添加到源中?

1 个答案:

答案 0 :(得分:1)

我不确定插件和ckeditor,但通常浏览器和可能的编辑器不允许内联元素包含块元素,因此不能划分里面。

  

P元素代表一个段落。它不能包含块级   元素(包括P本身)。

     

我们不鼓励作者使用空P元素。用户代理应该   忽略空P元素。

来源:http://www.w3.org/TR/html401/struct/text.html#h-9.3.1

相关问题