我希望能够在Quill中实现以下内容:
<ul>
<li>Something<br>
Else
</li>
</ul>
开箱即用,Quill删除br并且不支持使用insertText(...,'\ n',...)或用户编辑在li中添加br。
我看到如何注册一个键盘绑定来处理,例如,“shift-enter”能够创作这样的内容,它似乎既可以在Parchment中表示,也可以有Blots在Quill中表示这个(即Break等)。
所有这一切,我不清楚在Quill编辑器中是否可以通过模块使用这个用例。
任何指针都会受到超级赞赏!
谢谢!
答案 0 :(得分:3)
要记住以下几个限制因素:
Quill内容必须通过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');
)。因此,如果添加了软断点,则无法用换行符表示。 \r
vs \n
vs \r\n
的历史记录表明,生成另一个换行符作为解决方案是个坏主意。
在架构上,Quill数据模型在所有位置始终在相应的DOM中同时具有块节点和叶节点是方便的。 <br>
用作占位符,因此<p><br></p>
代表一个空行,而不只是<p></p>
(即使您在<p></p>
上,旧版IE&lt; = 10也未呈现任何高度使用CSS指定它,因此<br>
在历史上是必要的)。内部块将在删除最后一个子项时自动添加<br>
,并在插入子项时删除<br>
。鉴于这种特殊行为(虽然可以通过defaultChild修改),但您不希望扩展默认的<br>
实现。
所以我要做的建议是创建一个自定义内联嵌入印迹,使用
指定一个类,以便它可以消除正常<br>
之间的歧义。要通过API插入它,它将是insertEmbed(index, 'customBr', true);
,来自<ul><li>Something<br class="custombr">Else</li></ul>
的{{1}}的JSON表示将为getContents()
。
这似乎有效,但尚未经过彻底测试:https://codepen.io/quill/pen/BJaOxP。