微信小程序开发问题之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 相关文章推荐
求得div 下 img的src地址的js代码
Feb 28 Javascript
Jquery ThickBox插件使用心得(不建议使用)
Sep 08 Javascript
基于jquery实现发送文章到手机的代码
Dec 26 Javascript
jQuery中extend函数详解
Feb 13 Javascript
js跨域请求的5中解决方式
Jul 02 Javascript
javascript+HTML5的canvas实现七夕情人节3D玫瑰花效果代码
Aug 04 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
Jul 27 Javascript
标准的js无缝滚动效果
Aug 30 Javascript
AngularJS控制器之间的通信方式详解
Nov 03 Javascript
bootstrap modal弹出框的垂直居中
Dec 14 Javascript
关于vue中 $emit的用法详解
Apr 12 Javascript
解决vue init webpack 下载依赖卡住不动的问题
Nov 09 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实现智能文件类型检测的实现代码
2011/08/02 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
php的curl封装类用法实例
2014/11/07 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
2016/05/18 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
2017/10/17 PHP
PHP实现的杨辉三角求解算法分析
2019/03/11 PHP
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
javascript上传图片前预览图片兼容大多数浏览器
2013/10/25 Javascript
用js代码改变单选框选中状态的简单实例
2013/12/18 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
jQuery自定义添加"$"与解决"$"冲突的方法
2015/01/19 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
js实现简单的获取验证码按钮效果
2017/03/03 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
[47:21]Liquid vs TNC Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
Python简单生成8位随机密码的方法
2017/05/24 Python
基于wxPython的GUI实现输入对话框(2)
2019/02/27 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
迪卡侬波兰体育用品商店:Decathlon波兰
2020/03/31 全球购物
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
微博营销计划书
2014/01/10 职场文书
工作会议欢迎词
2014/01/16 职场文书
预备党员的自我评价
2014/03/12 职场文书
史学专业毕业生求职信
2014/05/09 职场文书
iPhone13将有八大升级
2021/04/15 数码科技
MySQL 表空间碎片的概念及相关问题解决
2021/05/07 MySQL
MySQL表类型 存储引擎 的选择
2021/11/11 MySQL
如何解决php-fpm启动不了问题
2021/11/17 PHP