信小程序在功能不断升级的过程中经常会发布一些新的组件和API,但是这些组件和API仅支持高版本,低版本的微信无法使用,因此需要进行兼容处理。首先,当我们在使用一个组件或API时需要先查看其官方文档上的描述页,上面会带有各个功能所支持的版本,然后再使用以下方法进行兼容:
1、通过wx.getSystemInfo或者wx.getSystemInfoSync获取到小程序的基础库版本号SDKVersion,与某功能所支持的版本进行比较。另外SDKVersion也是1.1.0版本库才引入的属性,所以对于1.1.0以下的版本该字段为undefined,不过因为新的功能往往是1.1.0及以上版本引入的,所以也可以用于比较版本。
例:
wx.getSystemInfo({
success: function(res) {
console.log(res.SDKVersion)
}
})
另外getSystemInfo还能获取以下信息:
model 手机型号
pixelRatio 设备像素比
screenWidth 屏幕宽度 1.1.0
screenHeight 屏幕高度 1.1.0
windowWidth 可使用窗口宽度
windowHeight 可使用窗口高度
language 微信设置的语言
version 微信版本号
system 操作系统版本
platform 客户端平台
SDKVersion 客户端基础库版本 1.1.0
2、通过wx.canIUse(String)判断小程序的API,回调,参数,组件等是否在当前版本可用。
String参数说明: 使用${API}.${method}.${param}.${options}或者${component}.${attribute}.${option}方式来调用:
${API} 代表 API 名字
${method} 代表调用方式,有效值为return, success, object, callback
${param} 代表参数或者返回值
${options} 代表参数的可选值
${component} 代表组件名字
${attribute} 代表组件属性
${option} 代表组件属性的可选值
例:
wx.canIUse('openBluetoothAdapter')
wx.canIUse('getSystemInfoSync.return.screenWidth')
wx.canIUse('getSystemInfo.success.screenWidth')
wx.canIUse('showToast.object.image')
wx.canIUse('onCompassChange.callback.direction')
wx.canIUse('request.object.method.GET')
wx.canIUse('contact-button')
wx.canIUse('text.selectable')
wx.canIUse('button.open-type.contact')
需要注意的是 wx.canIUse 这个 api 本身也是需要判断是否支持的,可以先通过 if(wx.canIUse) 判断其是否支持,然后再使用 wx.canIUse 判断其他的属性是否支持。
3、对于新增的API最简单的兼容方式是直接通过if(api)的方式判断该能否调用:
例1:
if (wx.openBluetoothAdapter) {
wx.openBluetoothAdapter()
} else {
// 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示
wx.showModal({
title: '提示',
content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。'
})
}
例2:
加载过程中的进度框,可以避免用户在加载过程中进行操作导致混乱。
function showLoading(message) {
if (wx.showLoading) {
// 基础库 1.1.0 微信6.5.6版本开始支持,低版本需做兼容处理
wx.showLoading({
title: message,
mask: true
});
} else {
// 低版本采用Toast兼容处理并将时间设为20秒以免自动消失
wx.showToast({
title: message,
icon: 'loading',
mask: true,
duration: 20000
});
}
}
function hideLoading() {
if (wx.hideLoading) {
// 基础库 1.1.0 微信6.5.6版本开始支持,低版本需做兼容处理
wx.hideLoading();
} else {
wx.hideToast();
}
}
4、对于API的参数或者返回值有新增的参数,可以判断用以下代码判断:
wx.showModal({
success: function(res) {
if (wx.canIUse('showModal.cancel')) {
console.log(res.cancel)
}
}
})
作者:june5253
链接:https://www.jianshu.com/p/0fba6a687fea
分享到:
相关推荐
微信小程序兼容及性能优化 微信小程序的性能优化是一个非常重要的课题,因为小程序的性能直接影响用户的使用体验。在微信小程序中,性能优化可以从多方面入手,包括小程序的版本和微信版本的兼容性测试、性能测试...
基于uniapp开发的多端zblog小程序,目前已兼容 百度、微信、QQ。 本次1.0.2版本升级如下: 1.对所有列表UI样式进行优化 2.新增分类菜单页、分类列表页; 3.针对微信小程序添加了分享功能; 4.由于文章数据过大...
保护眼晴的漂亮定时小程序兼容win7哦,你可以设置提醒的分钟数,在还剩一分钟的时候,它会自动提醒,并且是纯绿色,不需要安装的小程序
基于uniapp开发的多端zblog小程序,目前已兼容 百度、微信、QQ。 本次1.0.2版本升级如下: 1.对所有列表UI样式进行优化 2.新增分类菜单页、分类列表页; 3.针对微信小程序添加了分享功能; 4.由于文章数据过大...
基于uniapp开发的多端zblog小程序,目前已兼容 百度、微信、QQ。 本次1.0.2版本升级如下: 1.对所有列表UI样式进行优化 2.新增分类菜单页、分类列表页; 3.针对微信小程序添加了分享功能; 4.由于文章数据过大...
基于uniapp开发的多端zblog小程序,目前已兼容 百度、微信、QQ。 本次1.0.2版本升级如下: 1.对所有列表UI样式进行优化 2.新增分类菜单页、分类列表页; 3.针对微信小程序添加了分享功能; 4.由于文章数据过大...
微信小程序和支付宝小程序API兼容插件是为了解决在跨平台开发过程中遇到的API不一致问题而设计的工具。这个插件允许开发者使用统一的API接口来编写代码,从而实现一次编写,两端运行的目标,极大地提高了开发效率和...
微信小程序兼容性问题 微信小程序发布一周多了,兼容性问题,特别是 Android 平台兼容性问题特别严重。据我观察,好多小程序掉到兼容性的坑里。掉坑里不要紧,更让人捉急的是,从坑里爬上来的时候,手刚抓到坑沿,又...
7. 兼容性:由于微信小程序的运行环境限制,工具包可能已经解决了与微信小程序兼容性的问题,使得开发者无需担心底层实现的细节。 总的来说,"微信小程序 Cryptojs 解密工具包"为开发者提供了一套完整的加密解决...
优点跨平台,设置代码多端运行(小程序、h5、未来还可以直接压缩成app)自带常用组件,完美继承了内置组件的小程序兼容小程序rpx,使页面更轻松地改装各种语法机箱该项目基于小程序开发者工具内置的小程序运行框架来...
此外,这个工具可能还会处理微信小程序特有的API调用,将其转换为支付宝小程序兼容的API。 4. 开发流程: 使用此转换工具时,开发者首先需要将微信小程序的源代码导入到工具中,然后工具会进行语法分析和转换。...
微信小程序2020最新全部地址数据json格式
这个方法可能使用XML或JSON格式的数据,因为这两种格式都与微信小程序兼容。 为了使微信小程序能调用Webservice,我们需要在JS文件中使用`wx.request`方法。此方法接受一个参数对象,包含URL(指向Webservice的地址...
DIY小程序,DIY手机壳,手机壳DIY,DIY制作,相关的小程序前端示例代码,基于UNIAPP,已兼容抖音、微信小程序;.zip
在微信小程序中嵌入H5页面来播放监控视频流,特别是使用WebRTC技术,可能会遇到1到2秒的画面延迟问题,而这个问题需要针对iOS和Android两大操作系统进行优化以实现良好的兼容性。以下将详细探讨这一主题,以及如何...
在描述中提到,这个小程序兼容“XP”,“WIN2003”,以及“WIN7”操作系统,这意味着它是为较旧的Windows版本设计的,可能不包含对最新Windows系统的支持。 在Windows系统中,自动关机功能可以通过多种方式实现,...
在这个场景中,我们关注的是两个特定的JavaScript文件:`jsEncrypt.js` 和 `jsencrypt.min.js`,它们与小程序兼容,并且涉及到加密功能。这两个文件是`jsencrypt`库的不同版本。 `jsEncrypt.js` 是一个JavaScript...
注意选择合适的小程序兼容版本,避免因API不兼容导致的问题。 在代码中,我们可以通过`wx.createSelectorQuery()`获取DOM元素,并利用`wx.request()`加载模型数据。模型的权重文件通常以二进制格式存储,我们需要将...
这样的工具通过解析和转换RN项目中的JSX、样式和组件,将其转化为与微信小程序兼容的代码结构。这样,开发者就可以利用已有的RN项目基础,快速地将应用适配到微信小程序平台,无需从头开始编写小程序代码。 转换...
最近开发微信小程序,遇到到过种坑,例如什么前端发送请求,后端请求成功,没有获取到前端传递的值;后端请求成功,并且值,前端就是出不来数据;请求接口出现Provision headers are shown的现象;到最后苹果手机上...