当前位置:   article > 正文

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

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

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

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

最终方法:

  1. formatRichText(html) { //控制小程序中图片大小
  2. let newContent = html.replace(/<img[^>]*>/gi, function (match, capture) {
  3. match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
  4. match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
  5. match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
  6. return match;
  7. });
  8. newContent = newContent.replace(/style="[^"]+"/gi, function (match, capture) {
  9. match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi, 'max-width:100%;');
  10. return match;
  11. });
  12. newContent = newContent.replaceAll('style=""', '');
  13. // newContent = newContent.replace(/<br[^>]*\/>/gi, '');
  14. //处理图片
  15. // newContent = newContent.replace(/\<img/gi, '<img style="max-width:100%;width:100%;height:auto;vertical-align: middle;"');
  16. //处理媒体
  17. //获取视频的地址
  18. const videoRegex = /<div data-w-e-type="video"[^>]*>[\s\S]*?<\/div>/gi;
  19. const regexSrc = /src="([^"]+)"/
  20. const videoItem = newContent.match(videoRegex);
  21. if (videoItem.length > 0) {
  22. for (let i = 0; i < videoItem.length; i++) {
  23. let src = videoItem[i].match(regexSrc);
  24. this.detailsMedia.push({url: src[1], type: 'video'})
  25. }
  26. }
  27. newContent = newContent.replace(videoRegex, '')
  28. //获取图片地址
  29. const imgRegex = /<img[^>]*\s+src="([^"]+)"[^>]*>/gi
  30. const imgItem = newContent.match(imgRegex);
  31. if (imgItem.length > 0) {
  32. for (let i = 0; i < imgItem.length; i++) {
  33. let src = imgItem[i].match(regexSrc);
  34. this.detailsMedia.push({url: src[1], type: 'image'})
  35. }
  36. }
  37. newContent = newContent.replace(imgRegex, '')
  38. // 获取富文本文本
  39. // 正则表达式  全局匹配 table tr td标签,并给各自标签添加class类名
  40. newContent = newContent.replace(/<table/g, '<table class="table" style="width:100%;"')
  41. newContent = newContent.replace(/<tr/g, '<tr class="tr" style="display: table-row;"')
  42. newContent = newContent.replace(/<td/g, '<td class="td" style="display: table-cell;text-align: left;"')
  43. newContent = newContent.replace(/<ol/g, '<ol class="ol" style="text-align: left;padding-left:20rpx;margin:0;"')
  44. return newContent;
  45. },

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/397368
推荐阅读
相关标签
  

闽ICP备14008679号