halo-dev / halo

强大易用的开源建站工具。
https://www.halo.run
GNU General Public License v3.0
33.24k stars 9.59k forks source link

编辑文章,选择列表格式,最后一个列表项无法使用删除键回到上一行,导致多出一个空行 #5065

Closed RuanLia closed 8 months ago

RuanLia commented 9 months ago

系统信息

使用的哪种方式运行?

Docker

在线站点地址

No response

发生了什么?

编辑文章,选择列表格式,最后一个列表项无法使用删除键回到上一行,导致多出一个空行

相关日志输出

No response

附加信息

Uploading 2abc06e6a0d7eecfbe1f5609c6c10e2d.mp4…

RuanLia commented 9 months ago

微信图片_20231218171354

LIlGG commented 9 months ago

/kind bug /area editor

AirboZH commented 8 months ago

在 tiptap 官方的 Demo 中也发现了这个问题,包括 bullet list 和 ordered list

当 list-item 下方为一个段落 p 时 image

删除(backspace) p 标签时光标会移动到 list-item 当中并新建一个 item image

上面描述的和 halo 默认编辑器中出现的状况是一样的。

不同的是,在 tiptap 的演示当中,按下退格键 (backspace) 时候并不会在 list 下方创建一个 p 标签。 而是在上一个 item 中新建一个 p 标签,再按删除的时候才会移除,或者按 回车键 会将这个 item 中的 p 转为ul之外的 p 段落 image

但是在 halo 默认编辑器中删除后立即变为 p 标签,p 标签删除(backspace) 又变成 item ,以此循环。

这个问题似乎是 ProseMirror 的遗留问题 https://github.com/ProseMirror/prosemirror/issues/370

不过tiptap也给出了解决方法 https://github.com/ueberdosis/tiptap/issues/3367#issuecomment-1666785236 使用一个新的按键映射来暂时解决这个问题 https://github.com/ueberdosis/tiptap/tree/develop/packages/extension-list-keymap

AirboZH commented 8 months ago

/assign