小程序的rich-text富文本标签不支持link标签,这就导致我们从京东商城拿到的商品详情富文本无法解析。

rich-text组件用法

小程序商城对接京东商城商品,拿到的京东商品详情的富文本数据格式如下:

我们可以看到,拿到的商品详情并不是我们所想的img标签  而是通过link标签再次去请求css样式,可以看出上面有多个div,这也就是说明了图片是通过div当成背景图渲染出来的,我们来看看link的样式,看下图:

这就导致小程序无法解析京东的商品详情数据,我们直接来看解决办法,目前我想到的有两个解决方案,我们先来看最简单的第一个(我目前已经实现的方案)


第一方案:小程序实现的完整代码

if(that.dataObj.warehouseContent){// 匹配link标签href属性的值let css = that.dataObj.warehouseContent.match(/<link.+?href=\'(.+?)\'.*>/)[1]wx.downloadFile({url: `https:${css}`,  // 把京东的css下载到本地success (res) {if (res.statusCode === 200) {// 读取本地文件内容wx.getFileSystemManager().readFile({filePath:res.tempFilePath, // 本地css文件地址encoding:'utf8', // 通过utf8解析success(data){if(!data.data){return}// 匹配url的内容  匹配出来的格式是---> url(xxx.jpg)let matchData = data.data.match( /url\((.+?)*\)/g )let imgs = ''for(let matchDataIndex in matchData){// 去掉‘url(’,转换后的格式是--->  xxx.jpg)let oneSubstr = matchData[matchDataIndex].substr(4)// 去掉最后的)括号 转换后的格式是---> xxx.jpglet twoSubstr = oneSubstr.substr(0,oneSubstr.length-1)// 然后把图片url拼接到img标签上 转换后的格式是--->   <img style="width:100%;" src="xxx.jpg">imgs+= `<img style="width:100%;" src="${twoSubstr}">`}that.dataObj.warehouseContent = that.dataObj.warehouseContent + imgsthat.$apply()},fail(err){console.log('err',err)}})}}})}

上面是实现功能的完整代码

下面是对代码的分析

that.dataObj.warehouseContent是京东商品详情富文本内容,我们先通过正则表达式解析把link标签的href属性值解析出来(变量:css),然后下载(wx.downloadFile)京东的css样式文件到本地,不懂wx.downloadFile怎么使用的可以移步到微信小程序官方api文档

点击了解:wx.downloadFile使用方法

res.tempFilePath是css文件下载到本地文件所在的位置,再通过文件管理器读取本地文件内容,我们需要读取css文件的样式内容

wx.getFileSystemManager().readFile({filePath:res.tempFilePath, // 本地css文件地址encoding:'utf8', // 通过utf8解析success(data){console.log('拿到css文件内容:',data.data)         },fail(err){console.log('err',err)}
})

关于文件管理器(wx.getFileSystemManager)的用法请移步到微信小程序官方api:点击了解:wx.getFileSystemManager使用方法

data.data是我们的样式内容,这个时候我们使用正则把图片url匹配下来,重新拼接到img标签上:

// 匹配url的内容  匹配出来的格式是---> url(xxx.jpg)
let matchData = data.data.match( /url\((.+?)*\)/g )
let imgs = ''for(let matchDataIndex in matchData){// 去掉‘url(’,转换后的格式是--->  xxx.jpg)let oneSubstr = matchData[matchDataIndex].substr(4)// 去掉最后的)括号 转换后的格式是---> xxx.jpglet twoSubstr = oneSubstr.substr(0,oneSubstr.length-1)// 然后把图片url拼接到img标签上 转换后的格式是--->   <img style="width:100%;" src="xxx.jpg">imgs+= `<img style="width:100%;" src="${twoSubstr}">`
}
// 处理好的图片数据重新赋值回去
that.dataObj.warehouseContent = that.dataObj.warehouseContent + imgs

如果有不理解的可以看看我在代码上面写的注释,或者在下方评论。


方案二(还未实践,稍微复杂,但是实现的最终效果一样)

我们知道,小程序rich-text组件并不支持link标签和style标签,我尝试过下载京东的样式文件到本地,通过<sytle>这里插入京东的样式文件</style>,然后拼接到富文本内,但是这个方法并不可行,因为小程序rich-text组件不支持style标签,但是还有一种稍微复杂的方案,我们用正则匹配把每个类名对应花括号里面的样式解析下来,然后再渲染进div标签的style属性内,这种方式是可行的,但是会复杂一些,我们来看一下结构

.ssd-module-wrap .ssd-module,
.ssd-module-wrap .ssd-module-heading {width: 640px;position: relative;overflow: hidden;
}
<div class="ssd-module" style="width: 640px;position: relative;overflow: hidden;"></div>
<div class="ssd-module-heading" style="width: 640px;position: relative;overflow: hidden;"></div>

目前想到实现的方式就这两种,希望能帮助到你们!

另外你们可以关注下我的微信个人公众号“程序员小鸿”,有什么问题直接来公众号留言扣我哟!

【微信小程序】无法解析京东商城商品详情富文本数据相关推荐

  1. 微信小程序页面跳转传递参数(富文本)

    wx.navigateTo({url:'../yinsi/yinsi?data=1',events: {// 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据acceptDataFromO ...

  2. 微信小程序开发一个小型商城(五、商品详情)

    上一篇文章:微信小程序开发一个小型商城(四.商品列表) 在从上一个界面跳转过来,会看到商品详情这个界面goods_detail :如下图所示: 页面分析:从上到下:一个轮播图+一个view标签存储商品 ...

  3. 微信小程序开发一个小型商城(四、商品列表)

    上一篇文章,微信小程序开发一个小型商城(三.商品分类设计) 在从上一个界面跳转过来,会看到商品列表这个界面:如下图所示: 页面分析:从上到下:分别是一个已经定义好的自定义组件,下面的综合,销量,也是一 ...

  4. 小程序swiper怎么让内容撑开高度_[视频]微信小程序实战优购商城,涵盖你所学的技能点...

    很多友友都在找视频教程学习,IT技术教程分享网[http://www.mano100.cn]已经为你收集了各种各样的视频教程,不用再到处找视频教程学习了.无论是免费的,还是收费的,都在这里了.只要你注 ...

  5. 基于微信小程序的水果销售商城的设计与实现

    基于微信小程序的水果销售商城的设计与实现  源码获取:https://www.bilibili.com/video/BV1Ne4y1g7dC/ 随着科技的迅速发展,计算机技术已应用到社会的各个领域.随 ...

  6. 微信小程序开发一个小型商城(八、个人页面)

    上一篇文章:微信小程序开发一个小型商城(七.支付页面) 在上方还是使用wx:if进行判断是否有登录的数据,有的话将数据当中的图片和名字渲染到页面当中,不存在的话使用一个登录按钮表示需要用户登录.往下分 ...

  7. 微信小程序怎么上架和发布商品?

    小程序商城商品上架与发布是很重要的一步操作.那么微信小程序怎么上架和发布商品? 第一步:登录来客电商后台 第二步:依次点击商品管理--商品列表--发布商品 第三步:完善商品信息 注意事项: 商品详细介 ...

  8. 微信小程序之服装购物商城(含源码+论文+答辩PPT等)

    项目功能简介: 该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 本系统包含微信小程序做的服装商城前台和Java做的后台管理系统: 微信小程序--服装商城前台涉及技术:WXML ...

  9. 基于微信小程序的校园二手商城的设计与实现-计算机毕业设计源码+LW文档

    毕 业 论 文 开 题 报 告 1.本课题的研究意义 互联网飞速发展的现在,信息技术和网络技术的不断向上进步提高,互联网广泛应用于人们的生活中.随着经济发展的迅速大学生在大学期间会购买一些闲置物品,并 ...

最新文章

  1. stitching detail输出的dot图含义
  2. python脚本实例手机端-python调用adb脚本来实现群控安卓手机初探
  3. Flash Builder4.6 无法启动,并且报 Failed to create the Java Virtual Machine (2—可能更好些)...
  4. centos6.5 yum安装mysql_CentOS 6.5使用yum安装MySQL快速上手必备
  5. 神经网络与深度学习——TensorFlow2.0实战(笔记)(五)(Matplotlib绘图基础<1>python)
  6. [紧急问题和解决方案] 无法打开被权限管理服务(RMS)加密的Office 2003文档
  7. 程序员挑战高薪,你必须会的十大面试题《一》
  8. OpenShift 4 - 运行Spark和Zeppelin大数据应用
  9. 微信公众号开发 [04] 模板消息功能的开发
  10. 深入理解javascript原型和闭包 1
  11. sql事务Transaction
  12. 中国最好的论坛(未分类版)
  13. 最新版ins安装包下载
  14. LeetCode-618. 学生地理信息报告(困难)行转列
  15. SmartGit一个月试用期过期的解决方法
  16. html5的canvas绘制迷宫地图
  17. 无线路由器的连接与设置
  18. 微信公众号开发python库_轻松实现python搭建微信公众平台
  19. 你看我像不像学HTML的人(五)——链接标签、注释和特殊字符
  20. 你们知道官网购买服务器可以返佣吗

热门文章

  1. 小码哥-斗鱼直播APP之娱乐基本展示
  2. ZOJ1654.Place the Robots放置机器人——最大独立集
  3. Python中矩阵运算(基于numpy包)
  4. Github+jsDelivr搭建免费快速的个人图床
  5. 一文搞懂什么是数据仓库(Data Warehouse)数据仓库与数据库区别有哪些?什么是元数据?
  6. 华为mate40国行版价格曝光,发布时间已确定
  7. Linux个人笔记(一)之快乐的linux命令行
  8. VBA编程_常用函数总结3
  9. java自动雨刷系统_汽车自动雨刷系统大有学问
  10. python期末大作业 800行_python第三次周末大作业