Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后

Ckeditor plugin : insert fake element add unwilling <p> tags before and after

本文关键字:lt 标签 gt 不情愿 插入 add 元素 Ckeditor-plugin      更新时间:2023-09-26

我是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>

当我尝试插入真正的元素('container'变量)时,一切都很好,没有向源中添加

标记,问题似乎与假元素有关。

你知道为什么在编辑器中插入假元素时,这些

标记会被添加到源中吗?

我不确定插件和ckeditor,但通常浏览器和编辑器都不允许内联元素包含块元素,因此段落内部不能有分割

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

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

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