在我正在编写的 CKEditor 插件中,我需要创建一个新的空段落。
我知道<p></p>
大多数浏览器会折叠空段落 (),这就是为什么 CKEditor 对它们进行一些特殊处理的原因:
- 显示 HTML 源代码时,CKEditor 显示
<p> </p>
一个空段落(例如,当您按两次 Enter 键时) - 根据浏览器的不同,CKEditor 在编辑区域用另一个占位符填充段落。例如,在 Mozilla Firefox 中,它会
<br type="_moz" />
在段落中插入 a。
但是,当手动插入一个p
DOM 节点时(使用 CKEditor dom 对象),这种特殊处理就被省略了。不过,当我切换到源视图并返回编辑模式时,它会神奇地出现。
我试过了:
var new_p = new CKEDITOR.dom.element('p');
editor.insertElement(new_p);
和:
var new_p = new CKEDITOR.dom.element.createFromHtml('<p></p>');
editor.insertElement(new_p);
并且:
editor.insertHtml('<p>');
但是没有对空段落进行特殊处理。我得到一个空段落,但由于浏览器正在折叠它,我无法正确查看或编辑其内容。
当来回切换到源代码视图时,CKEditor 检测到空段落并插入填充符。提交数据时也是如此。但是我需要在插入新节点时立即出现填充符。
我如何让 CKEditor 处理我的新段落,就像它在用户按两次 Enter 时创建的任何其他空段落一样?
我知道我也可以
手动将 HTML 内容作为 HTML 内容插入到新的 DOM 节点,但这是一个巨大的区别——因为在这种情况下,空间确实出现在编辑区域中,所以当用户在新段落中输入内容时,他必须删除非破坏空间手动。