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


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性能最佳实践的讨论,与求教
Mar 30 Javascript
jQuery提交表单ajax查询实例代码
Oct 07 Javascript
javascript获取当前鼠标坐标的方法
Jan 10 Javascript
jQuery内容过滤选择器用法分析
Feb 10 Javascript
javascript定时器完整实例
Feb 10 Javascript
JQuery中$.each 和$(selector).each()的区别详解
Mar 13 Javascript
用js实现博客打赏功能
Oct 24 Javascript
详解vue数据渲染出现闪烁问题
Jun 29 Javascript
jsonp跨域请求详解
Jul 13 Javascript
简单谈谈CommonsChunkPlugin抽取公共模块
Dec 31 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
Jun 26 Javascript
用JS写一个发布订阅模式
Nov 07 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
在Zeus Web Server中安装PHP语言支持
2006/10/09 PHP
PHP数据库调用类调用实例(详细注释)
2012/07/12 PHP
递归实现php数组转xml的代码分享
2015/05/14 PHP
CodeIgniter配置之config.php用法实例分析
2016/01/19 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
使两个iframe的高度与内容自适应,且相等
2006/11/20 Javascript
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
JavaScript入门教程(5) js Screen屏幕对象
2009/01/31 Javascript
用Mootools获得操作索引的两种方法分享
2011/12/12 Javascript
Javascript生成json的函数代码(可以用php的json_decode解码)
2012/06/11 Javascript
JavaScript获取一个范围内日期的方法
2015/04/24 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
URL中“#” “?” &amp;“”号的作用浅析
2017/02/04 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
2019/07/30 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
[01:02:09]Liquid vs TNC 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21
2020/07/19 DOTA
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
Python处理字符串之isspace()方法的使用
2015/05/19 Python
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
Python玩转Excel的读写改实例
2019/02/22 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
Python xlwt模块使用代码实例
2020/06/10 Python
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
马来西亚最大的在线隐形眼镜商店:MrLens
2019/03/27 全球购物
网上开商店的创业计划书
2014/01/19 职场文书
新书发布会策划方案
2014/06/09 职场文书
2016年大学生暑假爱心支教活动策划书
2015/11/26 职场文书
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS
修改并编译golang源码的操作步骤
2021/07/25 Golang
mysql中整数数据类型tinyint详解
2021/12/06 MySQL