如何停止CKEditor用<br>

How to stop CKEditor replacing empty tags with <br>

本文关键字:br gt 何停止 lt CKEditor      更新时间:2023-09-26

是否有一种方法可以防止CKEditor在空标签中插入br并停止移除包装器元素。

例如:

当我在编辑器中添加一些内容时,默认情况下会出现一对"p"。

<div>
   <p>content</p>
</div>

但当我删除"内容"时,它会被替换,dom看起来像这样:

<p>
  br 
  ""
</p>

如何禁用此默认行为?在我的情况下,我想要:

<div>
  <p>
   <br>
  <p/>
</div>

backspace/delete(以及许多其他行为)由浏览器实现,根据引擎的不同,其工作方式可能不同。CKEditor覆盖了其中的一些(通常是最坏的),但我认为它不能处理这种情况。

无论如何,解决方案是以自定义的方式处理退格,但最简单的方法,即重新实现退格行为,由于案例数量众多,并不容易。因此,我会尝试一些变通方法,例如在退格后修复DOM。它可能类似于:

  1. editor#key事件,检查所选内容和DOM的位置。记住它是否与您想要修复的情况相匹配
  2. 等待几毫秒,或者直到#keyup事件,然后按照您希望的方式修复DOM和选择

此外,如果侦听器出现任何未执行的问题,请阅读CKEditor中的Listening to DOM events。