微信小程序开发问题之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 相关文章推荐
javascript 兼容FF的onmouseenter和onmouseleave的代码
Jul 19 Javascript
分享几个超级震憾的图片特效
Jan 08 Javascript
caller和callee的区别介绍及演示结果
Mar 10 Javascript
JavaScript匿名函数之模仿块级作用域
Dec 12 Javascript
jQuery Mobile页面返回不需要重新get
Apr 26 Javascript
Angularjs为ng-click事件传递参数
Jun 15 Javascript
解决Jquery下拉框数据动态获取的问题
Jan 25 jQuery
JavaScript实现的滚动公告特效【基于jQuery】
Jul 10 jQuery
layui 选择列表,打勾,点击确定返回数据的例子
Sep 02 Javascript
vue element 中的table动态渲染实现(动态表头)
Nov 21 Javascript
JS删除对象中某一属性案例详解
Sep 08 Javascript
原生js实现下拉框选择组件
Jan 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 mssql 时间格式问题
2009/01/13 PHP
php session 错误
2009/05/21 PHP
下拉列表多级联动dropDownList示例代码
2013/06/27 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
PHP基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
php实例化一个类的具体方法
2019/09/19 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
2019/10/03 PHP
jQuery extend 的简单实例
2013/09/18 Javascript
js对象的复制继承实例
2015/01/10 Javascript
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
浅谈javascript中执行环境(作用域)与作用域链
2016/12/08 Javascript
JS实现微信弹出搜索框 多条件查询功能
2016/12/13 Javascript
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
JavaScript中的惰性载入函数及优势
2020/02/18 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
Python用csv写入文件_消除空余行的方法
2018/07/06 Python
Python拼接微信好友头像大图的实现方法
2018/08/01 Python
Python 访问限制 private public的详细介绍
2018/10/16 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
django使用xadmin的全局配置详解
2019/11/15 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
解决pycharm修改代码后第一次运行不生效的问题
2021/02/06 Python
Wedgwood美国官网:英国骨瓷,精美礼品及家居装饰
2018/02/17 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
2014年村委会工作总结
2014/11/24 职场文书
2015年安全工作总结范文
2015/04/02 职场文书
工作表现证明
2015/06/15 职场文书
CSS实现背景图片全屏铺满自适应的3种方式
2022/07/07 HTML / CSS