swan.canIUse

解释: 判断智能小程序的API,回调,参数,组件等是否在当前版本可用。

方法参数

String schema

schema 的表达形式

  • ${API}.${method}.${param}.${option}
  • ${class}.${method}.${param}.${option}
  • ${component}.${attribute}.${option}

返回值

Boolean 当前版本是否可用

入参类型错误时,会抛出一个标准的Error对象。

schema参数说明

参数说明
${API}API 名字
${class}类名
${method}调用方式,有效值为return, object, 回调函数的名称(多数为success和callback)
${param}参数或者返回值
${option}参数的有效值或者返回值的属性或者组件属性的有效值
${component}组件名字
${attribute}组件属性

示例

扫码体验

swan.canIUse - 图1请使用百度APP扫码

图片示例

swan.canIUse - 图2

swan.canIUse - 图3

swan.canIUse - 图4

代码示例 1

在开发者工具中预览效果

  • 在 swan 文件中
  1. <view class="wrap">
  2. <button type="primary" bindtap="canIUse">canIUse</button>
  3. </view>
  • 在 js 文件中
  1. Page({
  2. canIUse() {
  3. // 组件
  4. console.log('view.hover-class', swan.canIUse('view.hover-class'));
  5. console.log('scroll-view.scroll-x', swan.canIUse('scroll-view.scroll-x'));
  6. console.log('cover-view', swan.canIUse('cover-view'));
  7. console.log('button.size.default', swan.canIUse('button.size.default'));
  8. // API: ${method} 为 object
  9. console.log('request.object.method.OPTIONS', swan.canIUse('request.object.method.OPTIONS'));
  10. // API: ${method} 为 success
  11. console.log('ai.imageAudit.success.data.stars.name', swan.canIUse('ai.imageAudit.success.data.stars.name'));
  12. // API: ${method} 为 callback
  13. console.log('onAppShow.callback.entryType.user', swan.canIUse('onAppShow.callback.entryType.user'));
  14. // API: ${method} 为 return
  15. console.log('getEnvInfoSync.return.env.trial', swan.canIUse('getEnvInfoSync.return.env.trial'));
  16. // API: 类
  17. console.log('VideoContext.requestFullScreen.object.direction', swan.canIUse('VideoContext.requestFullScreen.object.direction'));
  18. console.log('CanvasContext.fill', swan.canIUse('CanvasContext.fill'));
  19. }
  20. });
  • 在 css 文件中
  1. .wrap {
  2. padding: 50rpx 30rpx;
  3. }

代码示例2 - 判断智能小程序的某个API是否在当前版本可用 :

在开发者工具中预览效果

  • 在 swan 文件中
  1. <button data-name="getSystemInfo" type="primary" bindtap="bindCanIUse">swan.getSystemInfo</button>
  • 在 js 文件中
  1. Page({
  2. bindCanIUse(e) {
  3. let canIuseResult = swan.canIUse(e.currentTarget.dataset.name); // true
  4. swan.showToast({
  5. title: JSON.stringify(canIuseResult),
  6. icon: 'none'
  7. });
  8. }
  9. });

代码示例3 - 判断智能小程序的某个API的调用方式是否在当前版本可用 :

在开发者工具中预览效果

  • 在 swan 文件中
  1. <button data-name="getSystemInfo.success" type="primary" bindtap="bindCanIUse">getSystemInfo.success</button>
  • 在 js 文件中
  1. Page({
  2. bindCanIUse(e) {
  3. let canIuseResult = swan.canIUse(e.currentTarget.dataset.name); // true
  4. swan.showToast({
  5. title: JSON.stringify(canIuseResult),
  6. icon: 'none'
  7. });
  8. }
  9. });

代码示例4 - 判断智能小程序的某个API的调用方式的返回值是否在当前版本可用 :

在开发者工具中预览效果

  • 在 swan 文件中
  1. <button data-name="getSystemInfoSync.return.screenWidth" type="primary" bindtap="bindCanIUse">getSystemInfoSync.return.screenWidth</button>
  • 在 js 文件中
  1. Page({
  2. bindCanIUse(e) {
  3. let canIuseResult = swan.canIUse(e.currentTarget.dataset.name); // true
  4. swan.showToast({
  5. title: JSON.stringify(canIuseResult),
  6. icon: 'none'
  7. });
  8. }
  9. });

代码示例5 - 判断智能小程序的某个API的调用方式返回的参数可选值是否在当前版本可用 :

在开发者工具中预览效果

  • 在 swan 文件中
  1. <button data-name="chooseImage.success.tempFiles.path" type="primary" bindtap="bindCanIUse">chooseImage.success.tempFiles.path</button>
  • 在 js 文件中
  1. Page({
  2. bindCanIUse(e) {
  3. let canIuseResult = swan.canIUse(e.currentTarget.dataset.name); // false
  4. swan.showToast({
  5. title: JSON.stringify(canIuseResult),
  6. icon: 'none'
  7. });
  8. }
  9. });

代码示例6 - 判断智能小程序的某个组件是否在当前版本可用 :

在开发者工具中预览效果

  • 在 swan 文件中
  1. <button data-name="text" type="primary" bindtap="bindCanIUse">text</button>
  • 在 js 文件中
  1. Page({
  2. bindCanIUse(e) {
  3. let canIuseResult = swan.canIUse(e.currentTarget.dataset.name); // true
  4. swan.showToast({
  5. title: JSON.stringify(canIuseResult),
  6. icon: 'none'
  7. });
  8. }
  9. });

代码示例7 - 判断智能小程序的某个组件属性是否在当前版本可用 :

在开发者工具中预览效果

  • 在 swan 文件中
  1. <button data-name="text.selectable" type="primary" bindtap="bindCanIUse">text.selectable</button>
  • 在 js 文件中
  1. Page({
  2. bindCanIUse(e) {
  3. let canIuseResult = swan.canIUse(e.currentTarget.dataset.name); // true
  4. swan.showToast({
  5. title: JSON.stringify(canIuseResult),
  6. icon: 'none'
  7. });
  8. }
  9. });

代码示例8 - 判断智能小程序的某个组件属性的可选值是否在当前版本可用 :

在开发者工具中预览效果

  • 在 swan 文件中
  1. <button data-name="button.open-type.contact" type="primary" bindtap="bindCanIUse">button.open-type.contact</button>
  • 在 js 文件中
  1. Page({
  2. bindCanIUse(e) {
  3. let canIuseResult = swan.canIUse(e.currentTarget.dataset.name); // true
  4. swan.showToast({
  5. title: JSON.stringify(canIuseResult),
  6. icon: 'none'
  7. });
  8. }
  9. });

Bug&Tip

  • 回调函数的名称以文档为准;
  • 不支持 fail 和 complete 回调函数的判断;
  • 支持success回调参数的判断,举例如下:
  1. swan.canIUse('request.success.data');
  • 纯 number 类型的属性不做支持;
  • 带有.或空格的属性不做支持;
  • 如果参数是 Array. 或 Array. 类型,校验方式举例如下:
  1. // swan.ai.textReview Array.<Object>
  2. swan.canIUse('ai.textReview.success.result.reject.label');
  3. // swan.chooseImage Array.<string>
  4. swan.canIUse('chooseVideo.object.sourceType.album');