微信小程序开发问题之wx.previewImage


Posted in Javascript onDecember 25, 2018

小知识

微信小程序开发问题之wx.previewImage

wx.previewImage是微信小程序官方提供的预览图片功能的api。

在新页面中全屏预览图片。预览的过程中用户可以进行保存图片、发送给朋友等操作。

那么他有哪些坑呢?

我遇到的问题藏得比较深,我是在使用wxParse解析富文本时发现的。wxParse在解析img时会给它加上点击事件,那么这个点击事件是什么呢?

图在下面:

微信小程序开发问题之wx.previewImage

从中可以看到是微信的图片预览功能。其中that.setData({isPreview:true})是我加上去用来判断是否点击了图片,本身是没有的,此时先忽略掉。

首先,点击图片预览时,会终止页面一切正在执行的操作,这是为什么呢?我猜测是触发了页面的onHide函数,我在onHide中打log时果不其然,验证了我是正确的。

当你再次点击图片回去时,会再次触发页面的onShow事件。所以,当你在onHide或者onShow函数里有执行的操作的时候就要注意了,这两个函数都会被触发,所以这时候就需要判断,这两个函数被触发是来源于正常的页面加载隐藏还是来源于点击图片预览,于是便有了我上面在wxParse的源码wxParse.js里的wxParseImgTap里加了一句that.setData({isPreview:true}) ,而后我们可以用isPreview来判断onShow和onHide是否是被预览图片触发的。

此时我们并没有解决页面事件被终止的事实,因为线程被终止了。因为js里是单线程的,预览图片时会向服务器请求图片src,所以此时其他的异步操作便被停止,因为预览图片是一个同步操作,所以当你点击图片时,图片预览优先级最高,其他动作暂停,当你再次点击图片回到原样时,图片预览完成,在开发者工具里会自动继续之前页面被暂停的动作,但是真机调试却不会。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
jQuery EasyUI API 中文文档 - Documentation 文档
Sep 29 Javascript
浅谈javascript中call()、apply()、bind()的用法
Apr 20 Javascript
javascript 判断两个日期之差的示例代码
Sep 05 Javascript
Node.js静态文件服务器改进版
Jan 10 Javascript
浅谈javascript基础之客户端事件驱动
Jun 10 Javascript
Javascript中关于Array.filter()的妙用详解
Dec 04 Javascript
vue 将页面公用的头部组件化的方法
Dec 18 Javascript
vuejs点击class变化的实例
Sep 05 Javascript
微信小程序配置服务器提示验证token失败的解决方法
Apr 03 Javascript
ES6顶层对象、global对象实例分析
Jun 14 Javascript
JavaScript实现随机五位数验证码
Sep 27 Javascript
原生js实现俄罗斯方块
Oct 20 Javascript
微信小程序使用for循环动态渲染页面操作示例
Dec 25 #Javascript
JavaScript简单实现动态改变HTML内容的方法示例
Dec 25 #Javascript
使用gulp构建前端自动化的方法示例
Dec 25 #Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
Dec 25 #Javascript
详解vuex commit保存数据技巧
Dec 25 #Javascript
bootstrap table实现合并单元格效果
Dec 24 #Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
Dec 24 #Javascript
You might like
PHP 类型转换函数intval
2009/06/20 PHP
ThinkPHP3.1基础知识快速入门
2014/06/19 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
PHP速成大法
2015/01/30 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
javascript 动态添加事件代码
2008/11/30 Javascript
jQueryPad 实用的jQuery测试工具(支持IE,chrome,FF)
2010/05/22 Javascript
解决html按钮切换绑定不同函数后点击时执行多次函数问题
2014/05/14 Javascript
《JavaScript高级编程》学习笔记之object和array引用类型
2015/11/01 Javascript
jQuery实现图像旋转动画效果
2016/05/29 Javascript
jQuery获取与设置iframe高度的方法
2016/08/01 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
基于zepto.js实现手机相册功能
2017/07/11 Javascript
Node接收电子邮件的实例代码
2017/07/21 Javascript
浅谈ES6新增的数组方法和对象
2017/08/08 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
微信小程序template模板与component组件的区别和使用详解
2019/05/22 Javascript
js验证密码强度解析
2020/03/18 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
[44:22]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第一场 11.01
2020/11/02 DOTA
Python程序设计入门(1)基本语法简介
2014/06/13 Python
python进阶教程之词典、字典、dict
2014/08/29 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
python+opencv实现移动侦测(帧差法)
2020/03/20 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
养殖项目策划书范文
2014/01/13 职场文书
付款委托书范本
2014/04/04 职场文书
2014中考励志标语
2014/06/05 职场文书
离婚协议书怎么写
2015/01/26 职场文书
优秀班主任工作总结2015
2015/05/25 职场文书
python OpenCV学习笔记
2021/03/31 Python
Opencv实现二维直方图的计算及绘制
2021/07/21 Python
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android