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


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的Ajax的自动完成功能控件简要说明
Feb 22 Javascript
Jquery选择器中使用变量实现动态选择例子
Jul 25 Javascript
js 通过cookie实现刷新不变化树形菜单
Oct 30 Javascript
javascript弹出页面回传值的方法
Jan 28 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
Feb 27 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
Apr 13 Javascript
基于react框架使用的一些细节要点的思考
May 31 Javascript
javascript  删除select中的所有option的实例
Sep 17 Javascript
JS使用setInterval实现的简单计时器功能示例
Apr 19 Javascript
js实现简单选项卡功能
Mar 23 Javascript
Vue中保存数据到磁盘文件的方法
Sep 06 Javascript
JS添加或删除HTML dom元素的方法实例分析
Mar 05 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
PHP 导出Excel示例分享
2014/08/18 PHP
php中mysql操作buffer用法详解
2015/03/19 PHP
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
FCK调用方法..
2006/12/21 Javascript
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
详细分析JavaScript函数定义
2015/07/16 Javascript
jQuery选择器用法实例详解
2015/12/17 Javascript
JS中递归函数
2016/06/17 Javascript
vue.js开发环境安装教程
2017/03/17 Javascript
使用canvas及js简单生成验证码方法
2017/04/02 Javascript
AngularJS实现tab选项卡的方法详解
2017/07/05 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
基于Nodejs的Tcp封包和解包的理解
2018/09/19 NodeJs
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
Python开发常用的一些开源Package分享
2015/02/14 Python
Python中的__slots__示例详解
2017/07/06 Python
详解python字节码
2018/02/07 Python
Python实现的微信好友数据分析功能示例
2018/06/21 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
PyQt5固定窗口大小的方法
2019/06/18 Python
pandas的qcut()方法详解
2019/07/06 Python
解决os.path.isdir() 判断文件夹却返回false的问题
2019/11/29 Python
python使用SQLAlchemy操作MySQL
2020/01/02 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
Python sublime安装及配置过程详解
2020/06/29 Python
python实现canny边缘检测
2020/09/14 Python
css3实现可滑动跳转的分页插件示例
2014/05/08 HTML / CSS
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
小升初自荐信怎么写
2015/03/26 职场文书
计划生育责任书
2015/05/09 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书