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


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 动态生成私有变量访问器
Dec 06 Javascript
五个jQuery图片画廊插件 推荐
May 12 Javascript
JQuery获取文本框中字符长度的代码
Sep 29 Javascript
JS代码放在head和body中的区别分析
Dec 01 Javascript
用JQUERY增删元素的代码
Feb 14 Javascript
纯js网页画板(Graphics)类简介及实现代码
Dec 24 Javascript
jQuery使用post方法提交数据实例
Mar 25 Javascript
常见JS验证脚本汇总
Dec 01 Javascript
vue+elementUI组件table实现前端分页功能
Nov 15 Javascript
vue点击标签切换选中及互相排斥操作
Jul 17 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
Jul 19 Javascript
vue中touch和click共存的解决方式
Jul 28 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基础知识:类与对象(5) static
2006/12/13 PHP
php preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
php下mysql数据库操作类(改自discuz)
2010/07/03 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
2014/05/08 PHP
变量在 PHP7 内部的实现(二)
2015/12/21 PHP
PHP的Yii框架入门使用教程
2016/02/15 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
ModelDialog JavaScript模态对话框类代码
2011/04/17 Javascript
jquery加载页面的方法(页面加载完成就执行)
2011/06/21 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
JS对HTML标签select的获取、添加、删除操作
2013/10/17 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
2015/10/23 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
2017/03/08 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
js通过canvas生成图片缩略图
2020/10/02 Javascript
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
python对csv文件追加写入列的方法
2019/08/01 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
python实现人脸签到系统
2020/04/13 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
安全生产网格化管理实施方案
2014/03/01 职场文书
我爱祖国演讲稿
2014/09/02 职场文书
专家推荐信范文
2015/03/26 职场文书
入党积极分子培养人意见
2015/06/02 职场文书
DBCA命令行搭建Oracle ADG的流程
2021/06/11 Oracle
spring cloud 配置中心native配置方式
2021/09/25 Java/Android
「月刊Action」2022年5月号封面公开
2022/03/21 日漫
python 离散点图画法的实现
2022/04/01 Python
Springboot-cli 开发脚手架,权限认证,附demo演示
2022/04/28 Java/Android