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


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焦点图切换,上下翻转
May 12 Javascript
20行代码实现的一个CSS覆盖率测试脚本
Jul 07 Javascript
Extjs grid添加一个图片状态或者按钮的方法
Apr 03 Javascript
Bootstrap每天必学之按钮
Nov 26 Javascript
JavaScript利用HTML DOM进行文档操作的方法
Mar 28 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
May 11 Javascript
jquery easyUI中ajax异步校验用户名
Aug 19 Javascript
从零开始学习搭建React脚手架项目
Aug 23 Javascript
angularJs中json数据转换与本地存储的实例
Oct 08 Javascript
js自定义input文件上传样式
Oct 26 Javascript
通过JS运行机制的角度说说作用域
Mar 12 Javascript
vue鼠标悬停事件实例详解
Apr 01 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配置心得包含MYSQL5乱码解决
2006/11/20 PHP
需要注意的几个PHP漏洞小结
2012/02/05 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
PHP中file_get_contents高?用法实例
2014/09/24 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
jQuery为iframe的body添加click事件的实现代码
2011/04/07 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
模拟javascript中的sort排序(简单实例)
2016/08/17 Javascript
BootstrapValidator不触发校验的实现代码
2016/09/28 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
JS实现前端缓存的方法
2017/09/21 Javascript
Angular整合zTree的示例代码
2018/01/24 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
uni-app之APP和小程序微信授权方法
2019/05/09 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
详解javascript void(0)
2020/07/13 Javascript
Python编程之变量赋值操作实例分析
2017/07/24 Python
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
使用Python和Scribus创建一个RGB立方体的方法
2019/07/17 Python
Python 导入文件过程图解
2019/10/15 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
欧洲最古老的鞋厂:Peter Kaiser
2019/11/05 全球购物
The North Face意大利官网:服装、背包和鞋子
2020/06/17 全球购物
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
市场营销专科应届生求职信
2013/11/24 职场文书
平安建设工作方案
2014/06/02 职场文书
原告离婚代理词
2015/05/23 职场文书
出纳试用期工作总结2015
2015/05/28 职场文书
《兰兰过桥》教学反思
2016/02/20 职场文书
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js