uniapp rich-text selectable不生效是怎么回事?
我在uniapp中使用rich-text组件时,设置了selectable属性想让文本可被选中复制,但实际测试发现这个功能没有生效。请问是什么原因导致的?有没有解决方法?我的代码是这样的:
<rich-text :nodes="content" selectable></rich-text>
2 回复
uniapp的rich-text组件默认不支持selectable属性,需要手动开启。在rich-text标签中添加selectable属性并设为true即可:
<rich-text :nodes="htmlContent" selectable></rich-text>
如果仍不生效,检查nodes内容是否为字符串格式,确保不是对象数组。
在uni-app中,rich-text组件的selectable属性不生效通常由以下原因导致:
-
平台兼容性问题
selectable属性主要支持微信小程序,其他平台(如H5、App)可能不支持或支持不完整。 -
内容格式限制
rich-text的nodes内容需为数组格式,若直接传入HTML字符串可能导致属性失效。
解决方案:
-
检查平台兼容性
使用条件编译或仅在小程序端启用该功能:<rich-text v-if="isMP" :nodes="content" :selectable="true"></rich-text>computed: { isMP() { return uni.getSystemInfoSync().platform === 'mp-weixin' } } -
规范nodes格式
确保内容为数组,使用官方解析工具:const nodes = [{ name: 'div', attrs: { class: 'text' }, children: [{ type: 'text', text: '可选中文本' }] }] -
H5/App替代方案
使用user-selectCSS实现文本选择:<view class="selectable-text" v-html="content"></view>.selectable-text { -webkit-user-select: text; user-select: text; } -
检查版本
确保使用较新的uni-app版本(建议≥2.8.0)
建议优先在小程序环境测试,若仍需跨平台支持,可通过条件编译分别处理各平台实现。

