uniapp使用v-html无法解析其中的video标签

引言

开发一套系统,前端官网使用v-html解析时能解析出其中的video标签,在页面上正常展示。但是使用uniapp的时候无法解析出来

原因

uniapp底层是封装的小程序技术。使用开发者工具观察,代码

<view class="content" style="padding: 0 4vw;" v-html="content"></view>

在微信开发者工具中现实的标签是,是解析富文本,如下图所示,其中带有video标签,但是并没有在页面展示出来

解决方法

将video标签拆分出来,将整个富文本内容拆分成数组依次渲染

<view class="content" v-for="(item, index) in needArticleList" :key="index">
    <view v-if="item.type=='rich-text'" v-html="item.value" class='content'></view>
    <video v-if="item.type=='video' && item.value" :src="item.value"
            style="width:100%;height: 150px" frameborder="0"></video>
</view>

获取video标签,拆分成数组,传入富文本内容解析即可

// 富文本视频解析
            getVideo(data) {
                let videoList = [];
                let videoReg = /<video.*?(?:>|\/>)/gi; //匹配到字符串中的 video 标签
                let srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/i; //匹配到字符串中的 video 标签 的路径
                let arr = data.match(videoReg) || []; // arr 为包含所有video标签的数组
                let articleList = data.split('</video>') // 把字符串  从视频标签分成数组
                arr.forEach((item, index) => {
                  var src = item.match(srcReg);
                  videoList.push(src[1]) //所要显示的字符串中 所有的video 标签 的路径
                })
                let needArticleList = [];
                articleList.forEach((item, index) => {
                  if (item != "" && item != undefined) { //  常见的标签渲染
                    needArticleList.push({
                      type: 'rich-text',
                      value: item + "</video>"
                    });
                  }
                  let articleListLength = articleList.length; // 插入到原有video 标签位置
                  if (index < articleListLength && videoList[index] != undefined) {
                    needArticleList.push({
                      type: 'video',
                      value: videoList[index]
                    })
                  }
                })
                return needArticleList
             },
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值