小程序使用 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 組件遇到的問題,歡迎交流~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM