小程序使用 editor 富文本编辑器填坑指南

富文本编辑器文档:https://developers.weixin.qq.com/miniprogram/dev/component/editor.html

最近在做小程序上的富文本编辑器功能,发现几个隐藏点:

1. 小程序中的 editor 组件本质上是集成了 quill 编辑器:https://quilljs.com/,官方文档上也说明了,导出里面的内容需要加一段 quill 的 css 代码

2. 至于怎么集成,在 ready 后有时候能看到一个 webviewId,所以推测是通过 webview 集成的

 

关于工具栏

1. 工具栏是和 editor 组件分开的,可以任意定制

2. 理论上 quill 里面的工具栏,小程序都支持

3. 官方中文文档上的 代码片段只显示了部分工具栏(但是包含解决 iOS 页面上推问题的逻辑,见下文):https://developers.weixin.qq.com/s/W7uZ3EmU7jbl

4. 官方英文文档上的 代码片段展示了所有工具栏(可通过文档右上角切换语言查看):https://developers.weixin.qq.com/s/siL4iemP7n8W

 

关于 iOS 页面上推问题

官方中文文档中包含对应解决方案,思路为:

根据 editor 键盘弹起,动态调整 editor 的高度,由于 iOS 会上推页面,所以在上推完成(可以通过键盘高度变化的 duration 拿到时间)时直接滚动页面到顶部: wx.pageScrollTo({ scrollTop: 0 })

最终的效果是页面会先上推,后会弹,光标可以始终保持可见。(可能会有抖动,目前没有发现更好的解决办法)

 

关于页面底部如果有 Fixed 元素问题

聚焦时会把底部的 Fixed 元素顶起,这个属于兼容性问题,在某些安卓机如:华为 P30,小米9 中均有出现

由于笔者的需求需要根据底部元素动态计算 editor 的高度,所以可以如下解决:底部元素换为流式布局,用隐藏的 Fixed 元素用来计算高度。当然前提是页面只有一屏不需要滚动。

 

关于 P30 有时无法弹出键盘的问题

经测试发现聚焦 editor 出现此问题概率较大,怀疑是包裹 editor 的 webview 聚焦出现问题,调试了好久发现在聚焦之前往 editor 插入一段空白文本:insertText({ text: '' }) 或者 editorCtx.blur() 可以解决

 

以上为笔者最近使用 editor 组件遇到的问题,欢迎交流~

posted @ 2020-08-07 17:26  savokiss  阅读(275)  评论(0编辑  收藏