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


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 要点归纳(二) jQuery中的DOM操作(下)
Mar 23 Javascript
基于JQuery的cookie插件
Apr 07 Javascript
js onkeypress与onkeydown 事件区别详细说明
Dec 13 Javascript
javascript实现图像循环明暗变化的方法
Feb 25 Javascript
JavaScript中利用Array和Object实现Map的方法
Jul 27 Javascript
bootstrap输入框组使用方法
Feb 07 Javascript
vue-router实现组件间的跳转(参数传递)
Nov 07 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
Nov 22 Javascript
浅析Vue自定义组件的v-model
Nov 26 Javascript
详解webpack4升级指南以及从webpack3.x迁移
Jun 12 Javascript
vue中typescript装饰器的使用方法超实用教程
Jun 17 Javascript
vue通过接口直接下载java生成好的Excel表格案例
Oct 26 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把数据表导出为Excel表的最简单、最快的方法(不用插件)
2014/05/10 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
PHP实现图片压缩的两则实例
2014/07/19 PHP
PHP mysql事务问题实例分析
2016/01/18 PHP
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
Javascript事件实例详解
2013/11/06 Javascript
原生JS实现LOADING效果
2015/03/16 Javascript
JavaScript里四舍五入函数round用法实例
2015/04/06 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
jquery延迟对象解析
2016/10/26 Javascript
基于jQuery实现瀑布流页面
2017/04/11 jQuery
详解NODEJS基于FFMPEG视频推流测试
2017/11/17 NodeJs
Material(包括Material Icon)在Angular2中的使用详解
2018/02/11 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
python中int与str互转方法
2018/07/02 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
python能做哪方面的工作
2020/06/15 Python
使用Python文件读写,自定义分隔符(custom delimiter)
2020/07/05 Python
一文带你了解Python 四种常见基础爬虫方法介绍
2020/12/04 Python
纯css3实现的竖形无限级导航
2014/12/10 HTML / CSS
意大利奢侈品牌在线精品店:Jole.it
2020/11/23 全球购物
党员学习群众路线心得体会
2014/11/04 职场文书
长城英文导游词
2015/01/30 职场文书
2015年大学生入党自荐书
2015/03/24 职场文书
病危通知单
2015/04/17 职场文书
政协工作总结2015
2015/05/20 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
保安辞职申请书应该怎么写?
2019/07/15 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis