微信小程序开发问题之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技术实现的web小游戏(不含网游)
Jun 12 Javascript
Ubuntu 11.10 安装Node.js的方法
Nov 30 Javascript
javascript批量修改文件编码格式的方法
Jan 27 Javascript
js实现YouKu的漂亮搜索框效果
Aug 19 Javascript
jQuery实现简单的列表式导航菜单效果代码
Aug 31 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
Oct 09 Javascript
js实现简单排列组合的方法
Jan 27 Javascript
仅9张思维导图帮你轻松学习Javascript 就这么简单
Jun 01 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
Mar 21 Javascript
JS数组求和的常用方法实例小结
Jan 07 Javascript
webpack中如何加载静态文件的方法步骤
May 18 Javascript
vue组件实现移动端九宫格转盘抽奖
Oct 16 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 a simple smtp class
2007/11/26 PHP
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
初识laravel5
2015/03/02 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
window.opener用法和用途实例介绍
2013/08/19 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
JavaScript iframe数据共享接口实现方法
2016/01/06 Javascript
vue项目中使用百度地图的方法
2018/06/08 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
PWA介绍及快速上手搭建一个PWA应用的方法
2019/01/27 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
vue列表数据发生变化指令没有更新问题及解决方法
2020/01/16 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
[37:37]DAC2018 4.4 淘汰赛 Optic vs Mineski 第二场
2018/04/05 DOTA
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
python实现逆波兰计算表达式实例详解
2015/05/06 Python
python+Django+apache的配置方法详解
2016/06/01 Python
Python的CGIHTTPServer交互实现详解
2018/02/08 Python
python中实现数组和列表读取一列的方法
2018/04/03 Python
对Python多线程读写文件加锁的实例详解
2019/01/14 Python
多个python文件调用logging模块报错误
2020/02/12 Python
pygame实现弹球游戏
2020/04/14 Python
Python基于template实现字符串替换
2020/11/27 Python
医学院四年学习生活的自我评价
2013/11/06 职场文书
如何填写个人简历自我评价
2013/12/10 职场文书
2014国庆节演讲稿:祖国在我心中(400字)
2014/09/25 职场文书
大学生党性分析材料
2014/12/19 职场文书
财务年终工作总结大全
2019/06/20 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
JavaScript严格模式不支持八进制的问题讲解
2021/11/07 Javascript
SQL Server使用导出向导功能
2022/04/08 SQL Server