有的时候开发太急,我们并没有时间去仔细翻阅文档,这时候偶尔就会遇到一些不好找问题的坑
记录下我自己开发中遇到的坑
微信小程序
- 弹出层滚动穿透
- 启动更新问题
- 比较小程序基础库版本号
- 设置上一个页面的data数据
- 图片宽高等比显示
弹出层滚动穿透
有时候会出现在自己编写的弹出层中移动手指,页面也会跟随滚动的情况,解决方法如下
<view catchtouchmove="catchReturn">
<text>内容</text>
<view>
catchReturn(){
return;
}
启动强制更新
有时候由于这样那样的不可抗力,版本提交会很频繁,这时候由于小程序的运行机制,用户打开我们的小程序时,有可能并没有显示最新的运营内容
小程序冷启动时如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次冷启动才会应用上。
如果需要马上应用最新版本,可以使用 wx.getUpdateManager API 进行处理。但请注意在使用时应检测基础库版本号,做好兼容。
比较小程序基础库版本号
这个是小程序官方给的方法,网上查出来的一些直接用字符串比较,parseInt 比较的方法是错的
function compareVersion(v1, v2) {
v1 = v1.split('.')
v2 = v2.split('.')
var len = Math.max(v1.length, v2.length)
while (v1.length < len) {
v1.push('0')
}
while (v2.length < len) {
v2.push('0')
}
for (var i = 0; i < len; i++) {
var num1 = parseInt(v1[i])
var num2 = parseInt(v2[i])
if (num1 > num2) {
return 1
} else if (num1 < num2) {
return -1
}
}
return 0
}
compareVersion('1.11.0', '1.9.9') // => 1 // 1 表示 1.11.0 比 1.9.9 要新
compareVersion('1.11.0', '1.11.0') // => 0 // 0 表示 1.11.0 和 1.11.0 是同一个版本
compareVersion('1.11.0', '1.99.0') // => -1 // -1 表示 1.11.0 比 1.99.0 要老
另:后续版本会在基础库中增加版本比较方法
设置上一个页面的data数据
在页面跳转有些频繁的时候,跳转页面填写的表单数据需要传回上一个页面,如果不用缓存
let pages = getCurrentPages(),// 获取当前页面栈
prevPage = pages[pages.length - 2]
prevPage.setData(data)
图片宽高等比显示
我自己试object-fit这个属性在小程序中不生效
<image mode="widthFix"></image>