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


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 相关文章推荐
Javascript 异步加载详解(浏览器在javascript的加载方式)
May 20 Javascript
js上传图片及预览功能实例分析
Apr 24 Javascript
js实现商城星星评分的效果
Dec 29 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
Jan 19 Javascript
javascript HTML5文件上传FileReader API
Mar 27 Javascript
基于bootstrap实现广告轮播带图片和文字效果
Jul 22 Javascript
实例解析jQuery中如何取消后续执行内容
Dec 01 Javascript
JS设计模式之策略模式概念与用法分析
Feb 05 Javascript
JavaScript 中的 this 工作原理
Jun 20 Javascript
Vue修改项目启动端口号方法
Nov 07 Javascript
JS sort方法基于数组对象属性值排序
Jul 10 Javascript
浅谈JavaScript节流和防抖函数
Aug 25 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
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
PHP简单判断字符串是否包含另一个字符串的方法
2016/03/25 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
javasript实现密码的隐藏与显示
2015/05/08 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
2018/09/29 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
[01:34]传奇从这开始 2016国际邀请赛中国区预选赛震撼开启
2016/06/26 DOTA
Python linecache.getline()读取文件中特定一行的脚本
2008/09/06 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
HTML5 LocalStorage 本地存储详细概括(多图)
2017/08/18 HTML / CSS
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
工厂采购员岗位职责
2014/04/08 职场文书
励志演讲稿600字
2014/08/21 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
社会工作专业自荐信
2014/09/26 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
课外活动实习计划
2015/01/19 职场文书
华清池导游词
2015/02/02 职场文书
护士个人年终总结
2015/02/13 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
刑事上诉状范文
2015/05/22 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
golang json数组拼接的实例
2021/04/28 Golang
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android