微信小程序开发问题之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 相关文章推荐
为什么要在引入的css或者js文件后面加参数的详细讲解
May 03 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
Sep 02 Javascript
node.js中的fs.unlink方法使用说明
Dec 15 Javascript
Angular实现form自动布局
Jan 28 Javascript
轻松掌握JavaScript中的Math object数学对象
May 26 Javascript
详细讲解JavaScript中的this绑定
Oct 10 Javascript
js使用i18n实现页面国际化的方法
May 09 Javascript
简单谈谈关于Angular Cli打包的事
Sep 05 Javascript
js实现导航跟随效果
Nov 17 Javascript
Vuejs监听vuex中值的变化的方法示例
Dec 02 Javascript
Node.js中出现未捕获异常的处理方法
Jun 29 Javascript
在vue中配置不同的代理同时访问不同的后台操作
Sep 11 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
ThinkPHP之N方法实例详解
2014/06/20 PHP
PHP利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
js 与或运算符 || && 妙用
2009/12/09 Javascript
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
jsp 网站引入外部css或者js失效问题解决
2016/10/31 Javascript
JS HTML图片显示Canvas 压缩功能
2017/07/21 Javascript
高性能的javascript之加载顺序与执行原理篇
2018/01/14 Javascript
[05:49]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS 选手采访
2021/03/11 DOTA
python字典多条件排序方法实例
2014/06/30 Python
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
python类继承用法实例分析
2015/05/27 Python
python实现中文分词FMM算法实例
2015/07/10 Python
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
Python绘图之柱形图绘制详解
2020/07/28 Python
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
经典c++面试题六
2012/01/18 面试题
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
大专毕业生自我鉴定
2013/11/21 职场文书
承认错误的检讨书
2014/01/30 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
程序员求职信
2014/04/16 职场文书
厨房管理计划书
2014/04/27 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
餐厅如何利用“营销策略”扭转亏本局面
2019/10/15 职场文书
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android
Winsows11性能如何? win11性能测评多核竟比Win10差了10%
2021/11/21 数码科技