contenteditable无法删除自定义元素

0 阅读1分钟

背景

PixPin_2026-04-27_14-34-49.gif

bug产生的原因具体不太清楚。
问AI说是中间和后面没有文本节点,导致浏览器不知道应该怎么做 简单来说就是contenteditable的一个巨大bug,导致原生退格(backspace)没办法直接使用。

PixPin_2026-04-27_14-41-49.gif

解决方案

核心思路

  • 手动处理退格的逻辑
  • 使用零宽字符作为光标的容器
  • 当光标出现在零宽字符后面,检测前面是否是“徽章”元素,如果是,则将零宽字符和徽章元素同时删除掉。(否则用户在删除零宽字符时,发现页面上没有变化,以为我们的编辑器有问题)