微信小程序开发问题之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 相关文章推荐
推荐30个新鲜出炉的精美 jQuery 效果
Mar 26 Javascript
jquery实现滑动特效代码
Aug 10 Javascript
javascript引用类型之时间Date和数组Array
Aug 27 Javascript
基于jquery实现图片相关操作(重绘、获取尺寸、调整大小、缩放)
Dec 25 Javascript
require简单实现单页应用程序(SPA)
Jul 12 Javascript
springMVC结合AjaxForm上传文件
Jul 12 Javascript
原生JS取代一些JQuery方法的简单实现
Sep 20 Javascript
Bootstrap3下拉菜单的实现
Feb 22 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
Mar 02 Javascript
小程序实现新用户判断并跳转激活的方法
May 20 Javascript
JavaScript遍历数组和对象的元素简单操作示例
Jul 09 Javascript
js中Function引用类型常见有用的方法和属性详解
Dec 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 XML操作类DOMDocument
2009/12/16 PHP
PHP获取MAC地址的函数代码
2011/09/11 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
php微信公众号开发之简答题
2018/10/20 PHP
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
JavaScript 大数据相加的问题
2011/08/03 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
JS数组合并push与concat区别分析
2015/12/17 Javascript
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
JavaScript组合模式---引入案例分析
2020/05/23 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
Vue环境搭建+VSCode+Win10的详细教程
2020/08/19 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
Python之NumPy(axis=0 与axis=1)区分详解
2019/05/27 Python
python标记语句块使用方法总结
2019/08/05 Python
基于python实现学生信息管理系统
2019/11/22 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
Python unittest单元测试openpyxl实现过程解析
2020/05/27 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
总经理岗位职责
2013/11/09 职场文书
财务简历的自我评价
2014/03/05 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
教师党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
大学生党员个人总结
2015/02/13 职场文书
幼儿园老师工作总结2015
2015/05/22 职场文书
springboot+VUE实现登录注册
2021/05/27 Vue.js
「月刊Action」2022年5月号封面公开
2022/03/21 日漫
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
2022/04/30 Vue.js