[微信小程序]开发中遇到的一些“坑”
css里不可是使用background做背景图,在手机上不显示;
如果页面有超过四次的跳转,不可以使用wx.navigateTo()方法,可以使用wx.redirectTo(),在需要跳转的标签写上open-type=“redirect”。
如果有页面底部有小程序自带的tab切换,页面上也有点击事件可以与之跳到同一个页面,不可以使用wx.navigateTo(),需要用wx.switchTab跳转。
下拉刷新:在需要的页面的 json 中添加{"enablePullDownRefresh":true}该行代码,同时在页面刷新完成后添加:
wx.hideNavigationBarLoading() //完成停止加载wx.stopPullDownRefresh() //停止下拉刷新,防止在安卓手机下拉后不回到顶端复制代码
尽量不要传" "和"0"等值到后台,小程序会默认为 null 或 undefined ;
弹出层,如果超过六个字,不可以用微信自带的方法,要用:
//在页面任意地方添加{{popErrorMsg}}复制代码
//在app.css中添加.ad_popError{ background:#000; color:#fff; height: 58rpx; line-height: 58rpx; font-size: 24rpx; text-align: center; position: absolute; left: 10%; top: 50%; width: 80%; border-radius:5px;z-index:3; margin-top:-29rpx;opacity: 0.6;}复制代码
//在js中添加方法:ohShitfadeOut() {var fadeOutTimeout =setTimeout(() => {this.setData({ popErrorMsg:''});clearTimeout(fadeOutTimeout);}, 2000);},复制代码
//在需要弹出的地方添加:that.setData({ popErrorMsg:"提示语"});that.ohShitfadeOut();return;复制代码
如果有需要进入页面就刷新的地方,接口路径要写在onshow里,不需要刷新的页面写在onload里,否则每次都重新加载会又慢又卡,但是也不要把所有的接口都写在onshow里会浪费流量。
跳转页面在 url 上带参数大小写问题:例如:标签上的data-headerImg=‘{{item.header}}’,在 js 中,headerImg 被默认为 headerimg,不识别大写字母。
如果用微信自带的扫一扫功能跳转到小程序的指定页面,小程序规定只能添加50个路径。
截取后台返回数据等,只能在 js 中进行操作,不能在 html 中截取。
后台返回list数据往页面中赋值是,不可以用for循环进行赋值,需要用小程序的方法在html中写wx:for="{{items}}",如果在for循环中用setData进行赋值,页面上显示的是都是最后一条数据的值。
图片路径的反斜杠自动转成正斜杠。
css中font-weight:lighter,在 ios 中识别,(更细)在 android 上不识别(正常)
动态倒计时要写在onload里。
微信本身的 Bug 引发的兼容性问题有个现成的例子,就是wx.request()返回的状态码res.statusCode的值在 iOS 下是 int 型数据,而在 Android 6.0.1 上却是 String 型数据。更规范的方法是使用parseInt(res.statusCode) === 200来实现。
微信昵称是中文时,有时需要转码,encodeURIComponent()。
如果小程序只有开调式可以调取数据,这时要考虑代码里的域名和设置域名是否一样。