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


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 相关文章推荐
js 方法实现返回多个数据的代码
Apr 30 Javascript
JavaScript 页面编码与浏览器类型判断代码
Jun 03 Javascript
javascript控制swfObject应用介绍
Nov 29 Javascript
方便实用的jQuery checkbox复选框全选功能简单实例
Oct 09 Javascript
JS基于Ajax实现的网页Loading效果代码
Oct 27 Javascript
AngularJS动态绑定HTML的方法分析
Nov 07 Javascript
Vue.js数据绑定之data属性
Jul 07 Javascript
微信小程序request请求后台接口php的实例详解
Sep 20 Javascript
vue项目实战总结篇
Feb 11 Javascript
Vue组件Draggable实现拖拽功能
Dec 01 Javascript
Node使用Selenium进行前端自动化操作的代码实现
Oct 10 Javascript
Vue强制组件重新渲染的方法讨论
Feb 03 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 删除cookie方法详解
2014/12/01 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
PHP yield关键字功能与用法分析
2019/01/03 PHP
YII框架http缓存操作示例
2019/04/29 PHP
重写javascript中window.confirm的行为
2012/10/21 Javascript
JavaScript四种调用模式和this示例介绍
2014/01/02 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
node.js中格式化数字增加千位符的几种方法
2015/07/03 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
Vue常用的几个指令附完整案例
2018/11/06 Javascript
webpack 开发和生产并行设置的方法
2018/11/08 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
angular *Ngif else用法详解
2020/12/15 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
Python基于回溯法子集树模板解决马踏棋盘问题示例
2017/09/11 Python
使用Python通过win32 COM实现Word文档的写入与保存方法
2018/05/08 Python
python调用其他文件函数或类的示例
2019/07/16 Python
python中的&amp;&amp;及||的实现示例
2019/08/07 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
如何用Matplotlib 画三维图的示例代码
2020/07/28 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
让你相见恨晚的十个Python骚操作
2020/11/18 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
德国最大的拼图在线商店:Puzzle.de
2016/12/17 全球购物
临床医师专业个人自我评价范文
2013/11/07 职场文书
银行实习的自我鉴定
2013/12/10 职场文书
初中生自我评价
2014/02/01 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
婚宴来宾致辞
2015/07/28 职场文书