如何停止 CKEditor 用 <br> 替换空标签
How to stop CKEditor replacing empty tags with <br>
有没有办法阻止 CKEditor 在空标签中插入 br 并停止移除包装元素。
例如:
当我在编辑器中添加内容时,默认会出现一对 'p'。
<div>
<p>content</p>
</div>
但是当我删除 'content' 它被替换并且 dom 看起来像这样:
<p>
br
""
</p>
如何禁用此默认行为?就我而言,我想要:
<div>
<p>
<br>
<p/>
</div>
backspace/delete(以及许多其他行为)由浏览器实现,并且可能因引擎而异。 CKEditor 覆盖了其中的一些(通常是最坏的),但我认为它无法处理这种情况。
无论如何,解决方案是以自定义方式处理退格键,但最直接的方法,即重新实现退格键行为,由于案例数量众多,并不容易。因此,我会尝试一些解决方法 - 例如修复退格后的 DOM。它会是这样的:
- 侦听
editor#key
事件并检查选择的位置和 DOM。记住它是否符合你要修复的情况。
- 等待几毫秒,或直到
#keyup
事件,然后按照您的意愿修复 DOM 和选择。
此外,阅读 Listening to DOM events in CKEditor 以防未执行的侦听器出现任何问题。
有没有办法阻止 CKEditor 在空标签中插入 br 并停止移除包装元素。
例如:
当我在编辑器中添加内容时,默认会出现一对 'p'。
<div>
<p>content</p>
</div>
但是当我删除 'content' 它被替换并且 dom 看起来像这样:
<p>
br
""
</p>
如何禁用此默认行为?就我而言,我想要:
<div>
<p>
<br>
<p/>
</div>
backspace/delete(以及许多其他行为)由浏览器实现,并且可能因引擎而异。 CKEditor 覆盖了其中的一些(通常是最坏的),但我认为它无法处理这种情况。
无论如何,解决方案是以自定义方式处理退格键,但最直接的方法,即重新实现退格键行为,由于案例数量众多,并不容易。因此,我会尝试一些解决方法 - 例如修复退格后的 DOM。它会是这样的:
- 侦听
editor#key
事件并检查选择的位置和 DOM。记住它是否符合你要修复的情况。 - 等待几毫秒,或直到
#keyup
事件,然后按照您的意愿修复 DOM 和选择。
此外,阅读 Listening to DOM events in CKEditor 以防未执行的侦听器出现任何问题。