微信小程序开发问题之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 相关文章推荐
Track Image Loading效果代码分析
Aug 13 Javascript
jQuery 解析xml文件
Aug 09 Javascript
js中的cookie的读写操作示例详解
Apr 17 Javascript
13 款最热门的 jQuery 图像 360 度旋转插件推荐
Dec 09 Javascript
JS实用的动画弹出层效果实例
May 05 Javascript
jQuery解析json数据实例分析
Nov 24 Javascript
在 Angular 中实现搜索关键字高亮示例
Mar 21 Javascript
jquery+css实现侧边导航栏效果
Jun 12 jQuery
JavaScript变量作用域_动力节点Java学院整理
Jun 27 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
Oct 24 Javascript
关于vue的语法规则检测报错问题的解决
May 21 Javascript
微信小程序8种数据通信的方式小结
Feb 03 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.MVC的模板标签系统(二)
2006/09/05 PHP
使用eAccelerator加密PHP程序
2008/10/03 PHP
推荐十款免费 WordPress 插件
2015/03/24 PHP
php数据访问之查询关键字
2016/05/09 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
2017/11/06 PHP
PHP生成加减算法方式的验证码实例
2018/03/12 PHP
javascript 文档的编码问题解决
2009/03/01 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
JQuery操作元素的css样式
2015/03/09 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
Node.js 异步异常的处理与domain模块解析
2017/05/10 Javascript
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
JavaScript实现短信倒计时60s
2017/10/09 Javascript
详解Node 定时器
2018/02/26 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
2019/01/29 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
js前端传json后台接收‘‘被转为quot的问题解决
2020/11/12 Javascript
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
详解Python nose单元测试框架的安装与使用
2017/12/20 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
2019/09/26 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
最新教师自我评价分享
2013/11/12 职场文书
不打扫卫生检讨书
2014/02/12 职场文书
高中军训感言200字
2014/02/23 职场文书
个人借款协议书范本
2014/11/17 职场文书
物业保洁员岗位职责
2015/02/13 职场文书
讨论nginx location 顺序问题
2022/05/30 Servers