评论

微信小程序开发常见问题(四)

禁止转发,e.target & e.currentTarget的区别。

一、判断小程序版本号

小程序的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而已~

点赞 1
收藏
评论

1 个评论

  • 土豪不壕
    土豪不壕
    2019-02-21

    第四个:现在没办法调用页面onLoad方法重载页面了吧,会报错

    2019-02-21
    赞同
    回复
登录 后发表内容