uni-app 用变量的形式输出的 html 部分无法正常解析
uni-app 用变量的形式输出的 html 部分无法正常解析
操作步骤:
- 用js数组输出即可复现
预期结果:
- 根据输出html代码解析为想要的样式和数据
实际结果:
- 没有正常解析
bug描述:
例如用js数组的形式,数组其中一个元素的值为
card_list: [{
content: '<view class="iconfont"></view>'
}]
渲染完成后,界面显示的还是这个源代码,并没有正常的当作元素解析
更换为如下形式,数组中元素的值改为:
界面html代码为
<view class="iconfont">{{item.content}}</view>
渲染完成后,界面显示的是  而不是正确的字体
通过开发工具查看源代码
<view class="iconfont"></view>
除非改成如下格式
<view class="iconfont" v-html="item.content"></view>
但通过开发工具查看源码发现,实际上被转换为 rich-text 这种标签了。
不知道是否有禁止某些场景下自动解析的方法呢

更多关于uni-app 用变量的形式输出的 html 部分无法正常解析的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app 用变量的形式输出的 html 部分无法正常解析的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app 中,使用变量输出 HTML 内容时,默认不会解析 HTML 标签或实体字符。这是因为 uni-app 出于安全考虑,默认对动态内容进行转义处理,避免 XSS 攻击。
你的问题涉及两种情况:
-
直接输出包含 HTML 标签的字符串:
如content: '<view class="iconfont"></view>',若通过{{}}插值渲染,内容会被转义为纯文本,显示为源代码。
此时需使用v-html指令强制解析 HTML,但注意在非 H5 平台(如小程序)中,v-html会被转换为rich-text组件,这是跨端兼容的必要处理。 -
输出 HTML 实体字符(如
):
即使通过v-html解析,实体字符也可能无法直接显示为图标。原因是需在 CSS 中通过content属性渲染(如字体图标库),而v-html或rich-text无法直接触发 CSS 伪元素的解析。
解决方案:
-
若需渲染字体图标,建议直接使用 Unicode 字符或字体类名,而非实体字符。例如:
card_list: [{ content: '\\ue612' }] // 使用 Unicode 转义序列并在模板中通过类名控制样式:
<view class="iconfont">{{ item.content }}</view>同时确保 CSS 中定义了
iconfont的字体家族和对应字符的样式。 -
若必须渲染动态 HTML(如富文本),需接受跨端差异:H5 平台使用
v-html,非 H5 平台使用rich-text组件。uni-app 无全局禁止解析的配置,但可通过条件编译按平台处理:<!-- #ifdef H5 --> <view v-html="item.content"></view> <!-- #endif --> <!-- #ifndef H5 --> <rich-text :nodes="item.content"></rich-text> <!-- #endif -->

