微信小程序开发问题之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 相关文章推荐
JavaScipt基本教程之JavaScript语言的基础
Jan 16 Javascript
JavaScript 原型链学习总结
Oct 29 Javascript
jquery鼠标停止移动事件
Dec 21 Javascript
jQuery$命名冲突怎么办如何解决
Jan 16 Javascript
通过隐藏iframe实现文件下载的js方法介绍
Feb 26 Javascript
使用JS获取当前地理位置方法汇总
Dec 18 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
Nov 09 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
Jun 17 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
Oct 05 Javascript
JavaScript字符串转数字的5种方法及遇到的坑
Jul 16 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
Aug 23 Javascript
jQuery实现推拉门效果
Oct 19 jQuery
微信小程序使用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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
PHP编码规范-php coding standard
2007/03/16 PHP
PHP数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
php数组的概述及分类与声明代码演示
2013/02/26 PHP
php中adodbzip类实例
2014/12/08 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
JavaScript 序列化对象实现代码
2009/12/18 Javascript
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
js继承的实现代码
2010/08/05 Javascript
js最简单的拖拽效果实现代码
2010/09/24 Javascript
actionscript与javascript的区别
2011/05/25 Javascript
jQuery + Flex 通过拖拽方式动态改变图片的代码
2011/08/03 Javascript
IE6浏览器下resize事件被执行了多次解决方法
2012/12/11 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
JavaScript极简入门教程(二):对象和函数
2014/10/25 Javascript
js函数与php函数的区别实例浅析
2015/01/12 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
2018/06/15 Javascript
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
[48:51]完美世界DOTA2联赛PWL S2 Magma vs InkIce 第一场 11.28
2020/12/02 DOTA
Python实现的rsa加密算法详解
2018/01/24 Python
解决python中 f.write写入中文出错的问题
2018/10/31 Python
佐卡伊官网:中国知名珠宝品牌
2017/02/05 全球购物
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
介绍下Java的输入输出流
2014/01/22 面试题
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
如何利用cmp命令比较文件
2013/09/23 面试题
保研推荐信
2014/05/09 职场文书
不忘国耻振兴中华演讲稿
2014/05/14 职场文书
公司委托书怎么写
2014/08/02 职场文书
骨干教师申报材料
2014/12/17 职场文书
小学六一主持词开场白
2015/05/28 职场文书
生日宴会祝酒词
2015/08/10 职场文书
用python批量解压带密码的压缩包
2021/05/31 Python
Java基础——Map集合
2022/04/01 Java/Android