微信小程序开发问题之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 相关文章推荐
关于B/S判断浏览器断开的问题讨论
Oct 29 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
May 22 Javascript
Jquery中offset()和position()的区别分析
Feb 05 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
Mar 03 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
Jan 27 Javascript
JavaScript 数组中最大最小值
Jun 05 Javascript
js创建数组的简单方法
Jul 27 Javascript
js实现图片360度旋转
Jan 22 Javascript
详解.vue文件中style标签的几个标识符
Jul 17 Javascript
js实现提交前对列表数据的增删改查
Jan 16 Javascript
Vue 一键清空表单的实现方法
Feb 07 Javascript
gojs实现蚂蚁线动画效果
Feb 18 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学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
PHP 文件缓存的性能测试
2010/04/25 PHP
php中经典方法实现判断多维数组是否为空
2011/10/23 PHP
CodeIgniter使用smtp服务发送html邮件的方法
2015/06/10 PHP
php实现微信发红包
2015/12/05 PHP
详解php中空字符串和0之间的关系
2016/10/23 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
jQuery的deferred对象使用详解
2011/08/20 Javascript
jQuery 在光标定位的地方插入文字的插件
2012/05/10 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
使用js判断控件是否获得焦点
2014/01/03 Javascript
JS常用字符串处理方法应用总结
2014/05/22 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
Node.js进阶之核心模块https入门
2018/05/23 Javascript
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
Python中的延迟绑定原理详解
2019/10/11 Python
selenium+Chrome滑动验证码破解二(某某网站)
2019/12/17 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
公务员考察材料范文
2014/12/23 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
涨价通知
2015/04/23 职场文书
走进毛泽东观后感
2015/06/04 职场文书
个人催款函范文
2015/06/24 职场文书
维护民族团结心得体会2016
2016/01/15 职场文书
Nginx+SpringBoot实现负载均衡的示例
2021/03/31 Servers
MySQL sql_mode的使用详解
2021/05/08 MySQL
详解MySQL中的pid与socket
2021/06/15 MySQL
Oracle以逗号分隔的字符串拆分为多行数据实例详解
2021/07/16 Oracle
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技