小程序富文本提取图片可放大缩小


Posted in Javascript onMay 26, 2020

本文实例为大家分享了小程序富文本提取图片可放大缩小的具体代码,供大家参考,具体内容如下

启发:

因为最近有需求说在小程序商品的详情页里所有图片可以放大缩小,网上好像不太好找,就写了篇博客,供大家参考

step1

获取到富文本内容,怎么获取就是请求数据嘛,这个不在赘述了。

var nodes = res.data.data.content;

step2

检测 nodes中是否有img标签,这个有很多方法,我这里用的indexOf

if (nodes.indexOf("src") >= 0) {
}

step3

第三步就是用正则全局匹配img标签,并且替换成空,这里setData是为了把图片添加到wxml显示的,说下match和captrue,第一个是带有img标签的返回值,第二个是src的值

//s3:正则匹配所有图片路径
var imgs = [];
nodes = nodes.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, function (match, capture) {
 imgs.push(capture);
 that.setData({
  imgs: imgs
 });
 return '';
});

step4

最后就是把多余的p标签清除掉,影响样式

//s4:清除图片后正则匹配清除所有p标签
nodes = nodes.replace(/<p(([\s\S])*?)<\/p>/g, function (match, capture){
 return '';
});

完整的过程,本例亲测可行

//富文本图片放大
var nodes = res.data.data.content;
if (nodes.indexOf("src") >= 0) {
 //正则匹配所有图片路径
 var imgs = [];
 nodes = nodes.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, function (match, capture) {
  imgs.push(capture);
  that.setData({
   imgs: imgs
  });
  return '';
 });
 //清除图片后正则匹配清除所有p标签
 nodes = nodes.replace(/<p(([\s\S])*?)<\/p>/g, function (match, capture){
  return '';
 });
}

end

step5

wxml中

<view class='detail'>
 <rich-text nodes="{{nodes}}" bindtap='richImg'></rich-text>
</view>
<view class='detail1'>
 <block wx:for="{{imgs}}" wx:key="" wx:for-item="item">
   <image class='img' src='{{item}}' bindtap='chooseImg' data-src='{{item}}'></image>
 </block>
</view>

最后还有个预览的js

chooseImg: function (e) {  //预览
 var src = e.currentTarget.dataset.src;
 var urls = [];
 urls[0] = src;
 wx.previewImage({
  current: src, // 当前显示图片的http链接 
  urls: urls
 })
},

这里成功后可以需要调整图片的样式

最后

以上只是简单的demo,图片是连续的情况,但在富文本中可能会出现图片不连续,这个后续会贴出来,基本思路就是rich-text也是循环添加到wxml中,本例亲测可行,如有更好的方法,欢迎提出。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 定时局部刷新(setInterval)
Nov 19 Javascript
重写javascript中window.confirm的行为
Oct 21 Javascript
JS传值出现中文参数乱码的解决方法
Jun 30 Javascript
javascript中获取class的简单实现
Jul 12 Javascript
vue分页组件table-pagebar使用实例解析
Nov 15 Javascript
JavaScript中定义对象原型的两种使用方法
Dec 15 Javascript
JS使用正则实现去掉字符串左右空格的方法
Dec 27 Javascript
javascript设计模式之Adapter模式【适配器模式】实现方法示例
Jan 13 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
May 22 Javascript
node express使用HTML模板的方法示例
Aug 22 Javascript
Vue.js组件props数据验证实现详解
Oct 19 Javascript
在react项目中使用antd的form组件,动态设置input框的值
Oct 24 Javascript
微信小程序自定义联系人弹窗
May 26 #Javascript
微信小程序单选框自定义赋值
May 26 #Javascript
vue输入框使用模糊搜索功能的实现代码
May 26 #Javascript
jQuery弹框插件使用方法详解
May 26 #jQuery
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
May 26 #Javascript
微信小程序实现弹框效果
May 26 #Javascript
微信小程序自定义弹出层效果
May 26 #Javascript
You might like
ubuntu下编译安装xcache for php5.3 的具体操作步骤
2013/06/18 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
php数组键值用法实例分析
2015/02/27 PHP
php使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
js调试系列 初识控制台
2014/06/18 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
原生js实现图片轮播特效
2015/12/18 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
Nodejs中Express 常用中间件 body-parser 实现解析
2017/05/22 NodeJs
VueJS组件之间通过props交互及验证的方式
2017/09/04 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
node.js文件操作系统实例详解
2019/11/05 Javascript
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
py中的目录与文件判别代码
2008/07/16 Python
python k-近邻算法实例分享
2014/06/11 Python
一份python入门应该看的学习资料
2018/04/11 Python
分享一下Python数据分析常用的8款工具
2018/04/29 Python
使用pandas的DataFrame的plot方法绘制图像的实例
2018/05/24 Python
解决python 3 urllib 没有 urlencode 属性的问题
2019/08/22 Python
python返回数组的索引实例
2019/11/28 Python
Python tornado上传文件的功能
2020/03/26 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
Scrapy实现模拟登录的示例代码
2021/02/21 Python
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
ReVive利维肤美国官网:RéVive Skincare
2018/04/18 全球购物
C#中有没有运算符重载?能否使用指针?
2014/05/05 面试题
同事吵架检讨书
2014/02/05 职场文书
党员个人总结范文
2015/02/14 职场文书
杨善洲观后感
2015/06/04 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
优秀范文:《但愿人长久》教学反思3篇
2019/10/24 职场文书
win10蓝屏0xc0000001安全模式进不了怎么办?win10出现0xc0000001的解决方法
2022/08/05 数码科技