小程序中展示富文本 图片不适配?视频不显示?

最近遇到一个问题在小程序中渲染富文本的内容,如果里面有图片和视频,渲染的时候图片大小超屏幕了,而视频完全没有显示!!!

最后通过正则匹配替换后 图片可以了视频还是不行,看了微信小程序api官网才知道不支持视频渲染,那怎么办呢?

最终方法:

复制代码
    formatRichText(html) { //控制小程序中图片大小
      let newContent = html.replace(/<img[^>]*>/gi, function (match, capture) {
        match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
        match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
        match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
        return match;
      });
      newContent = newContent.replace(/style="[^"]+"/gi, function (match, capture) {
        match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, 'max-width:100%;');
        return match;
      });
      newContent = newContent.replaceAll('style=""', '');
      // newContent = newContent.replace(/<br[^>]*\/>/gi, '');
      //处理图片
      // newContent = newContent.replace(/\<img/gi, '<img style="max-width:100%;width:100%;height:auto;vertical-align: middle;"');
      //处理媒体
      //获取视频的地址
      const videoRegex = /<div data-w-e-type="video"[^>]*>[\s\S]*?<\/div>/gi;
      const regexSrc = /src="([^"]+)"/
      const videoItem = newContent.match(videoRegex);
      if (videoItem.length > 0) {
        for (let i = 0; i < videoItem.length; i++) {
          let src = videoItem[i].match(regexSrc);
          this.detailsMedia.push({url: src[1], type: 'video'})
        }
      }
      newContent = newContent.replace(videoRegex, '')
      //获取图片地址
      const imgRegex = /<img[^>]*\s+src="([^"]+)"[^>]*>/gi
      const imgItem = newContent.match(imgRegex);
      if (imgItem.length > 0) {
        for (let i = 0; i < imgItem.length; i++) {
          let src = imgItem[i].match(regexSrc);
          this.detailsMedia.push({url: src[1], type: 'image'})
        }
      }
      newContent = newContent.replace(imgRegex, '')
      // 获取富文本文本
      // 正则表达式  全局匹配 table tr td标签,并给各自标签添加class类名
      newContent = newContent.replace(/<table/g, '<table class="table" style="width:100%;"')
      newContent = newContent.replace(/<tr/g, '<tr class="tr" style="display: table-row;"')
      newContent = newContent.replace(/<td/g, '<td class="td" style="display: table-cell;text-align: left;"')
      newContent = newContent.replace(/<ol/g, '<ol class="ol" style="text-align: left;padding-left:20rpx;margin:0;"')
      return newContent;
    },

通过提取地址,我自己渲染~哈哈哈

相关推荐
REDcker19 分钟前
WebRTC 接收端音频流畅低延迟播放:原理与源码对照(NetEQ / Opus)
音视频·webrtc
小杰3122 小时前
ZLMediakit源码梳理
服务器·音视频·流媒体·zlmediakit
ai产品老杨4 小时前
异构计算时代的视频底座:基于 X86/ARM 与 GPU/NPU 的边缘云协同架构解析
arm开发·架构·音视频
AI服务老曹5 小时前
终结碎片化:基于 GB28181 与 RTSP 的企业级视频融合网关架构设计与源码解析
音视频
苏灵凯6 小时前
智能环境监测终端全栈设计:从单片机到微信小程序,手把手搞定!
单片机·嵌入式硬件·mcu·物联网·微信小程序·小程序·蓝牙模块
EasyDSS6 小时前
企业级融媒体平台私有化视频会议系统EasyDSS私有化部署打造安全可控的校园“音视频中枢”
安全·音视频·媒体
nhc0886 小时前
贵阳纳海川科技有限公司・货运物流行业解决方案
科技·微信小程序·小程序·软件开发·小程序开发
admin and root7 小时前
AWS S3 对象存储攻防&云安全之OSS存储桶漏洞
微信小程序·小程序·渗透测试·云计算·aws·src·攻防演练
AI自动化工坊7 小时前
实战教程:使用CapCut AI免费视频编辑器2小时制作专业宣传视频
人工智能·ai·开源·编辑器·音视频
取码网7 小时前
新版点微同城主题源码34.7+全套插件+小程序前后端 源文件
小程序