关于小程序rich-text组件(不支持视频节点、图片显示问题)

项目中遇到问题,后台配置富文本内容,小程序渲染的时候出现图片显示问题和视频节点不显示,排查过程中发现图片显示没问题,返回数据就是这么大的尺寸,那就是怎么适配了(下面直接上代码),视频节点不显示问题,看了下微信文档,这个组件是不支持vedio标签的,说了这么多直接上代码吧!

escape(html) {
    return String(html)
    // .replace(/&(?!\w+;)/g, '&')
    .replace(/&lt;/g, '<')
    .replace(/&gt;/g, '>')
    .replace(/&quot;/g, '"')
    .replace(/&#039;/g, "'");
  },
  convert (htmlText) {
    let str = htmlText.replace(/<img[^>]*>/gi, function (match, capture) {
    // return match.replace(/(<img[^>]*)(\/?>)/gi, "$1width='100%' $2") // 添加width="100%"
       return match.replace(/style\s*?=\s*?([‘"])[\s\S]*?\1/ig, 'style="max-width:100%;height:auto;"') // 替换style
    })
    return str
  },
  // 富文本渲染修复
  const callback = this.escape(res.rows.content)
  const artDelContent = this.convert(callback).replace(/\<img/gi, '<img style="max-width:100%;height:auto;display:block;"')
  let videoList = [];
  let videoReg = /<video.*?(?:>|\/>)/gi;   //匹配到字符串中的 video 标签
  let srcReg = /src=[\'\"]?([^\'\"]*)[\'\"]?/i;  //匹配到字符串中的 video 标签 的路径
  let arr = artDelContent.match(videoReg) || [];  // arr 为包含所有video标签的数组
  let articleList = artDelContent.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]
            })
          }
   })
   this.setData({          
   		artDelContent: needArticleList,
        });
  ``
  <view class="paragragh" wx:for="{{artDelContent}}" wx:key="index">
      <rich-text wx:if="{{item.type=='rich-text'?true:false}}" class="imgsty" nodes="{{item.value}}"></rich-text>
      <video wx:if="{{item.type=='video' && item.value != '' ?true:false}}" src="{{item.value}}" style="width:100%;height: 150px" frameborder="0"></video>    
      </view>

在这里插入代码片


欢迎大家沟通交流,这里是我的参考
[视频节点不显示问题](https://blog.csdn.net/forest_fire/article/details/121072470)
[图片适配问题](https://blog.csdn.net/qq_41909079/article/details/120453487)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序rich-text组件用于展示富文本内容,支持HTML标签和CSS样式。通过设置data属性为富文本的HTML字符串,可以将富文本内容渲染到页面上。使用方法如下: 1. 在wxml文件中引入rich-text组件: ```html <rich-text nodes="{{richTextNodes}}"></rich-text> ``` 2. 在对应的js文件中定义richTextNodes并赋值,可以通过wxParse库或自己手动处理字符串来生成richTextNodes。以下是一个简单的例子: ```javascript const htmlStr = '<div style="color: red;">这是一段红色的文字</div>'; const node = { name: 'div', attrs: { class: 'red-text', style: 'color: red;' }, children: [{ type: 'text', text: '这是一段红色的文字' }] }; const richTextNodes = [node]; this.setData({ richTextNodes: richTextNodes }); ``` 3. 在对应的wxss文件中定义样式,可以通过class或直接在节点上设置style属性来修改样式: ```css .red-text { color: red; } ``` 通过以上步骤,就可以在小程序中使用rich-text组件展示富文本内容了。需要注意的是,rich-text组件支持部分HTML标签和CSS样式,具体可以参考微信官方文档。其他关于富文本的操作和注意事项可以参考相关资料和[3]。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [微信小程序rich-text富文本用法实例分析](https://download.csdn.net/download/weixin_38660624/12942034)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [微信小程序 rich-text的使用方法](https://download.csdn.net/download/weixin_38741891/12775508)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [微信小程序rich-text图片宽高自适应的方法介绍(rich-text富文本)](https://blog.csdn.net/guo_qiangqiang/article/details/125059284)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值