微信小程序--兼容

小程序的功能不斷的增長,可是舊版本的微信客戶端並不支持新功能,因此在使用這些新能力的時候須要作兼容。html

文檔會在組件,API等頁面描述中帶上各個功能所支持的版本號。小程序

能夠經過 wx.getSystemInfo 或者 wx.getSystemInfoSync 獲取到小程序的基礎庫版本號。api

也能夠經過 wx.canIUse 詳情 來判斷是否能夠在該基礎庫版本下直接使用對應的API或者組件微信

兼容方式 - 版本比較

微信客戶端和小程序基礎庫的版本號風格爲 Major.Minor.Patch(主版本號.次版本號.修訂號)。 開發者能夠根據版本號去作兼容,如下爲參考代碼:ide

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

兼容方式 - 接口

對於新增的 API,能夠用如下代碼來判斷是否支持用戶的手機。spa

if (wx.openBluetoothAdapter) { wx.openBluetoothAdapter() } else { // 若是但願用戶在最新版本的客戶端上體驗您的小程序,能夠這樣子提示
 wx.showModal({ title: '提示', content: '當前微信版本太低,沒法使用該功能,請升級到最新微信版本後重試。' }) }

兼容方式 - 參數

對於 API 的參數或者返回值有新增的參數,能夠判斷用如下代碼判斷。code

wx.showModal({ success: function(res) { if (wx.canIUse('showModal.cancel')) { console.log(res.cancel) } } })

兼容方式 - 組件

對於組件,新增的組件或屬性在舊版本上不會被處理,不過也不會報錯。若是特殊場景須要對舊版本作一些降級處理,能夠這樣子作。htm

Page({ data: { canIUse: wx.canIUse('cover-view') } })
<video controls="{{!canIUse}}">
  <cover-view wx:if="{{canIUse}}">play</cover-view>
</video>
相關文章
相關標籤/搜索