微信小程序开发问题之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 相关文章推荐
关于可运行代码无法正常执行的使用说明
May 13 Javascript
基于jQuery的history历史记录插件
Dec 11 Javascript
JQuery Highcharts 动态生成图表的方法
Nov 15 Javascript
jquery实现手机号码选号的方法
Jul 31 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
Jun 01 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
Jun 13 Javascript
微信小程序 ecshop地址三级联动实现实例代码
Feb 28 Javascript
微信小程序富文本渲染引擎的详解
Sep 30 Javascript
Node中使用ES6语法的基础教程
Jan 05 Javascript
微信小程序网络请求实现过程解析
Nov 06 Javascript
jQuery实现影院选座订座效果
Apr 13 jQuery
React中的Context应用场景分析
Jun 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
php获取bing每日壁纸示例分享
2014/02/25 PHP
thinkPHP使用post方式查询时分页失效的解决方法
2015/12/09 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
JS解析XML实例分析
2015/01/30 Javascript
2016年最热门的15 款代码语法高亮工具,美化你的代码
2016/01/06 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
vue中el-upload上传图片到七牛的示例代码
2018/10/19 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
[35:39]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第二场 11.22
2020/11/24 DOTA
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
Python 爬虫之Beautiful Soup模块使用指南
2018/07/05 Python
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
pandas 层次化索引的实现方法
2019/07/06 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
python 实现二维列表转置
2019/12/02 Python
python em算法的实现
2020/10/03 Python
pip/anaconda修改镜像源,加快python模块安装速度的操作
2021/03/04 Python
长辈证婚人证婚词
2014/01/09 职场文书
中学生评语大全
2014/04/18 职场文书
镇创先争优活动总结
2014/08/28 职场文书
2014县委书记党的群众路线教育实践活动对照检查材料思想汇报
2014/09/22 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
2014年销售工作总结范文
2014/12/01 职场文书
初中教师个人工作总结
2015/02/10 职场文书
建国大业观后感600字
2015/06/01 职场文书
2015国庆节宣传语
2015/07/14 职场文书
迎新生欢迎词2015
2015/07/16 职场文书
如何使用pdb进行Python调试
2021/06/30 Python
python数据可视化使用pyfinance分析证券收益示例详解
2021/11/20 Python
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA