uni-app富文本编辑器使用 uni-app如何集成rich-text

老墨大大_5783

老墨大大_5783

2026-03-20

326人浏览

原创

uni-app中rich-text仅支持富文本渲染,不可编辑;需用web-view内嵌quill等编辑器实现编辑功能,注意图片上传、光标定位及ios/android兼容性问题。

uni-app富文本编辑器使用 uni-app如何集成rich-text

uni-app里不能直接用rich-text当编辑器

rich-text是uni-app的只读组件,只渲染HTML字符串,不支持光标定位、内容编辑、格式实时响应。想实现“富文本编辑”,本质是找一个可编辑容器 + 自行处理格式逻辑,或接入第三方编辑器SDK。

常见错误现象:rich-text绑定了v-model没反应;点击后无法聚焦;粘贴带样式的文字样式丢失;回车键直接跳转页面(因为默认行为未阻止)。

  • 真正能编辑的替代方案只有:textarea(纯文本)、web-view内嵌Web富文本编辑器(如Tiptap、Quill)、或原生插件(如iOS/Android平台调用系统级富文本控件)
  • 如果只是展示后台返回的富文本内容,rich-text完全够用;但只要涉及用户输入、加粗/标题/图片插入等操作,就必须换方案
  • 用web-view时注意:本地HTML需通过uni.postMessage与Vue页面通信;iOS下web-view对contenteditable支持更稳,Android部分机型可能光标偏移

用web-view加载Quill最简可行路径

Quill轻量、API清晰、社区维护活跃,比TinyMCE更适合uni-app这类跨端场景。关键是把编辑器实例和uni-app的数据流接通。

使用场景:需要支持加粗、斜体、标题、有序/无序列表、图片上传(base64或上传后替换src)的轻量编辑需求。

  • 在static/editor.html中引入Quill CDN,并初始化new Quill('#editor', { theme: 'snow' })
  • 监听text-change事件,每次变化后调用window.uni.postMessage({ type: 'content-change', html: editor.root.innerHTML })
  • uni-app页面里用<web-view :src="editorUrl"></web-view>加载,通过uni.$on('message')接收HTML内容并同步到data
  • 注意Quill输出的HTML默认含内联样式,若需适配小程序端rich-text渲染,得用正则或DOMParser清洗掉style属性,否则小程序不识别

图片上传必须自己接管,不能依赖Quill默认流程

Quill的image模块默认调用insertEmbed插入base64,但大图会导致data URI超长、iOS WebView崩溃、小程序包体积激增。真实项目中必须拦截并替换为上传后URL。

常见错误现象:插入图片后页面卡顿;真机调试时图片显示空白;上传成功但编辑器里没更新src。

  • 禁用默认图片模块:modules: { toolbar: { container: [['bold', 'italic'], [{ 'header': [1, 2, false] }], ['image']] }, image: false }
  • 自定义toolbar按钮,点击后调用uni.chooseImage,上传成功后执行quill.insertEmbed(quill.getSelection().index, 'image', uploadedUrl)
  • 务必检查uploadedUrl是否带协议(如https://),否则在web-view里相对路径会404
  • Android web-view对blob: URL支持差,别传blob,一律走HTTP(S)地址

iOS和Android表现差异最大的三个点

不是bug,是底层WebView能力差异。绕不开,只能针对性处理。

  • iOS下contenteditable光标位置精准,Android部分机型(尤其旧版微信X5内核)光标常卡在段首;解决方案:每次focus后手动quill.setSelection(quill.getLength())
  • Android web-view对document.execCommand兼容性差,Quill底层部分格式操作会fallback失败;建议关闭formats中非必需项,比如去掉script、iframe等高危标签
  • 键盘收起时,iOS会触发resize事件,Android不会;若编辑器高度随内容自适应,需监听uni.onKeyboardHeightChanged手动调整web-view高度

最易被忽略的是:所有通过web-view注入的JS,不能访问uni-app的this上下文,所有数据同步必须走postMessage——写在HTML里的函数拿不到Vue实例,也调不了uni.showToast,这点卡住过很多人。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2443

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5243

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6310

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5878

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

843

5

C语言变量命名
C语言变量命名

c语言变量名规则是:1、变量名以英文字母开头;2、变量名中的字母是区分大小写的;3、变量名不能是关键字;4、变量名中不能包含空格、标点符号和类型说明符。php中文网还提供c语言变量的相关下载、相关课程等内容,供大家免费下载使用。

2023.06.20

3089

3

c语言入门自学零基础
c语言入门自学零基础

C语言是当代人学习及生活中的必备基础知识,应用十分广泛,本专题为大家c语言入门自学零基础的相关文章,以及相关课程,感兴趣的朋友千万不要错过了。

2023.07.25

2288

9

c语言运算符的优先级顺序
c语言运算符的优先级顺序

c语言运算符的优先级顺序是括号运算符 > 一元运算符 > 算术运算符 > 移位运算符 > 关系运算符 > 位运算符 > 逻辑运算符 > 赋值运算符 > 逗号运算符。本专题为大家提供c语言运算符相关的各种文章、以及下载和课程。

2023.08.02

1220

5

c语言数据结构
c语言数据结构

数据结构是指将数据按照一定的方式组织和存储的方法。它是计算机科学中的重要概念,用来描述和解决实际问题中的数据组织和处理问题。数据结构可以分为线性结构和非线性结构。线性结构包括数组、链表、堆栈和队列等,而非线性结构包括树和图等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.09

1178

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习