是否可以延长羽毛笔以支撑<br>内部<li>?

  • 本文关键字:br 内部 li 长羽毛 是否 quill
  • 更新时间 :
  • 英文 :


我希望能够在Quill中实现以下目标:

<ul>
<li>Something<br>
Else
</li>
</ul>

开箱即用,Quill 删除了 br,并且不支持在 li 中添加带有 insertText(..., '', ...) 或用户编辑的 br。

我看到了如何注册键盘绑定来处理,例如"shift-enter"以便能够创作这样的内容,似乎既可以在羊皮纸中表示,也可以用污点在 Quill 中表示这一点(即 Break 等)。

综上所述,我不清楚这个用例是否可以通过模块在 Quill 编辑器中实现。

任何指示将不胜感激!

谢谢!

这里有几个需要记住的约束:

  1. 鹅毛笔内容必须以规范方式表示,并通过 API 明确修改。因此,如果您有<ul><li>SomethingElse</li></ul>并使用insertText(index, 'n'),则会产生歧义<ul><li>Something<br>Else</li></ul><p>Something</p><ul><li>Else</li></ul>。在 Quill 核心中,前者是不可能的,因此没有这种歧义(注意产生<ul><li>Something</li><li>Else</li></ul>你会称之为insertText(index, 'n', 'list', 'bullet');)。因此,如果添加了软中断,则不能用换行符表示。rvsnvsrn的历史表明,产生另一个换行符作为解决方案是一个坏主意。

  2. 从架构上讲,Quill 数据模型在所有位置的相应 DOM 中始终同时具有块和叶节点非常方便。<br>用作占位符,因此<p><br></p>表示空行而不仅仅是<p></p>(旧IE <= 10也没有在<p></p>上呈现任何高度,即使您使用CSS指定了它,因此<br>在历史上是必要的)。内部块将在删除其最后一个子项时自动添加<br>,并在插入子项时删除<br>。鉴于此特殊行为(尽管可以通过 defaultChild 进行修改),您不希望扩展默认<br>实现。

所以我的建议是创建一个自定义的内联嵌入印迹,该印迹使用
并指定一个类,以便它可以消除正常<br>之间的歧义。要通过 API 插入它,它将insertEmbed(index, 'customBr', true);并且来自getContents()<ul><li>Something<br class="custombr">Else</li></ul>的 JSON 表示形式将[{ insert: "Something" }, { insert: { custombr: true } }, { insert: "Else" }, { insert: "n", attributes: { list: 'bullet' } }]

这似乎有效,但尚未经过彻底测试:https://codepen.io/quill/pen/BJaOxP。

最新更新