一、判断小程序版本号
小程序的API是不断更新的,你可能使用某个API时,文档里会说明,此API在1.x.x版本开始支持,需要自己做兼容处理。
如果你使用小程序版本号做兼容,就必须了解小程序的基础库版本号规则,在这里介绍一下。
小程序基础库版本号使用 semver 规范,格式为 Major.Minor.Patch,Major、Minor、Patch 均为整数,1.9.901、2.44.322、10.32.44 都是符合 semver 风格的版本号。
以下是官方提供的兼容代码:
二、设置仅发起者可转发
有些场景,需要仅发起者可转发,参与者不能转发。比如老师上课点名签到,老师如果把签到小程序分享到群内,只希望现场的同学可以正常签到,即使其他同学想分享,也没有权限。
方法一:禁止显示分享按钮
小程序中有个API,wx.hideShareMenu,如下:
在page.js中,正常写入onShareAppMessage,然后判断用户是否为发起者,如果是发起者,调用wx.showShareMenu,如果不是发起者,调用wx.hideShareMenu。
方法二:单独做一个分享后的页面
这个办法比较low,但也能实现。思路是在onShareAppMessage里面的写入一个默认path,打开之后就是一个提示界面。如果是发起者,就把path修改成正常的路径~
三、swiper禁止手动滑动
最简单的方式,在swiper上面加一个透明的蒙层~
四、使用switchTab跳转后页面不刷新的问题
方法一:通过getCurrentPages获取获取当前的页面栈,调用对应的方法
switchTab成功跳转后调用success,此时可以拿到跳转后页面的page对象,从而调用页面onLoad方法重载页面;
方法二:把还tab的页面,代码逻辑放在onShow里面
五、e.target和e.currentTarget的区别
简单的说,e.currentTarge是指注册了事件监听器的对象,e.target是指对象里的子对象,实际触发这个事件的对象。
小程序开发过程中,如果通过event未获取到值时,或许是你自己用错了。
六、图片设置为圆角,会快速从方形闪烁一下
解决方法:给父元素设置圆角,或者给图片添加透明边框
七、input中使用手写输入法的坑
之前总有“报名工具”的小程序用户反馈,说是报名内容都输入完整了,但是保存不完整。
经排查,发现所有使用手写输入法的用户,都会遇到这现象。排查代码发现绑定的input事件,用户如果不点击手写输入法上的确认键,就不会触发bindinput。
这种情况下,有两种解决方式:
1、改用event.detail.value的形式来获取form表单数据;
2、再添加一个bindblur事件,保证事件能够正常执行;
因报名工具小程序中,有用户自定义字段,所以不确定用户会添加多少个字段,使用event获取的话,需要给每个input添加一个name属性,相对比较费劲,我改用了第二种方案。
八、IOS下用户授权后,头像和昵称显示问题
这个问题其实是图片src是一个data中的变量,然后这个变量又发生了变化。但是在IOS设备上,就是没办法显示更改后的图片。(或者编辑图文投票时,也会有这现象)
解决办法:通过wx:if和wx:else判断,展示不同的image组件
九、一键退出(隐藏)小程序
首先要说,这个需求不合理,右上角有退出按钮,但既然有同学问这问题,我也自己折腾了一下,基本可以实现一键退出。
先在每个page中添加隐藏page的方法:
有退出button的页面,对应的JS添加方法:
虽然可以实现,但也很low,其实就是隐藏了所有的page而已~
第四个:现在没办法调用页面onLoad方法重载页面了吧,会报错