微信小程序用户隐私保护指引内容介绍

本指引依据适用的个人信息保护相关法律法规制定,包括但不限于《中华人民共和国个人信息保护法》等,由开发者根据实际情况填写。

微信小程序用户隐私保护指引包括下列板块,其中具体的说明仅为示例。

引导语

  本指引是微信小程序示例微信小程序开发者”深圳市腾讯计算机系统有限公司“(以下简称“开发者”)为处理你的个人信息而制定。

开发者处理的信息

  根据法律规定,开发者仅处理实现微信小程序功能所必要的信息。
  - 开发者收集你选中的照片或视频信息,用于用户上传提交代码审核所需要的截图。

开发者需在此板块声明所处理的用户信息,微信会根据微信小程序版本隐私接口调用情况展示必填项,开发者可自主勾选其他项目。隐私接口与对应的处理的信息关系如下:

处理的信息 接口或组件
收集你的昵称、头像 <button open-type="chooseAvatar">、<input type="nickname">、wx.getUserInfo (已回收)、wx.getUserProfile (已回收)、<button open-type="userInfo">(已回收)
收集你的位置信息 wx.authorize({scope:’scope.userLocation’})、wx.authorize({scope: ‘scope.userLocationBackground’})、wx.authorize({scope: ‘scope.userFuzzyLocation’})、wx.getLocation、wx.startLocationUpdate、wx.startLocationUpdateBackground、wx.getFuzzyLocation、MapContext.moveToLocation
收集你选择的位置信息 wx.choosePoi、wx.chooseLocation
收集你的地址 wx.chooseAddress
收集你的发票信息 wx.chooseInvoiceTitle、wx.chooseInvoice
收集你的微信运动步数 wx.authorize({scope: ‘scope.werun’})、wx.getWeRunData
收集你的手机号 <button open-type="getPhoneNumber">、<button open-type="getRealtimePhoneNumber">
收集你的车牌号 wx.chooseLicensePlate
收集你选中的照片或视频信息 wx.chooseImage、wx.chooseMedia、wx.chooseVideo
收集你选中的文件 wx.chooseMessageFile
访问你的麦克风 wx.authorize({scope: ‘scope.record’})、wx.startRecord、RecorderManager.start、<live-pusher>、wx.joinVoIPChat
访问你的摄像头 wx.authorize({scope: ‘scope.camera’})、wx.createVKSession、<camera>、<live-pusher>、<voip-room>
访问你的蓝牙 wx.authorize({scope: ‘scope.bluetooth’})、wx.openBluetoothAdapter、wx.createBLEPeripheralServer
使用你的相册(仅写入)权限 wx.authorize({scope: ‘scope.writePhotosAlbum’})、wx.saveImageToPhotosAlbum、wx.saveVideoToPhotosAlbum
使用你的通讯录(仅写入)权限 wx.authorize({scope: ‘scope.addPhoneContact’})、wx.addPhoneContact
使用你的日历(仅写入)权限 wx.authorize({scope: ‘scope.addPhoneCalendar’})、wx.addPhoneRepeatCalendar、wx.addPhoneCalendar
调用你的加速传感器 wx.startAccelerometer
调用你的磁场传感器 wx.startCompass
调用你的方向传感器 wx.startDeviceMotionListening
调用你的陀螺仪传感器 wx.startGyroscope
读取你的剪切板 wx.setClipboardData、wx.getClipboardData

平台会对开发者处理信息的目的进行审核,请如实填写。

第三方插件信息

  为实现特定功能,开发者可能会接入由第三方提供的插件。第三方插件的个人信息处理规则,请以其公示的官方说明为准。XXX微信小程序接入的第三方插件信息如下:

  插件名称:客服助手
  插件提供方名称: 深圳市腾讯计算机系统有限公司
  - 开发者收集你选中的照片或视频信息,用于在客服会话中发送图片或视频类型的聊天内容。
  - 为了发送语音类型的聊天内容,开发者将在获取你的明示同意后,访问你的麦克风。

针对由引用了插件的微信小程序,将会在用户隐私保护指引中展示,展示内容包括插件名称、插件提供方名称与开发者处理的信息及目的。

第三方服务商信息

  微信小程序助手微信小程序由深圳市腾讯计算机系统有限公司代为开发,开发者保证深圳市腾讯计算机系统有限公司将在本指引规定范围内处理你的信息。

针对由代开发服务商进行开发的微信小程序,将会在用户隐私保护指引中进行展示。

用户权益

  1. 关于收集你的位置信息,你可以通过以下路径:微信小程序主页右上角“…”—“设置”—点击特定信息—点击“不允许”,撤回对开发者的授权。
  2. 关于收集你的手机号、收集你的发票信息,你可以通过以下路径:微信小程序主页右上角“...” — “设置” — “微信小程序已获取的信息” — 点击特定信息 — 点击“通知开发者删除”,开发者承诺收到通知后将删除信息。
  3. 关于你的个人信息,你可以通过以下方式与开发者联系,行使查阅、复制、更正、删除等法定权利。
  - 邮箱: miniprogram@tencent.com

微信会根据微信小程序版本隐私接口调用情况生成第1条与第2条描述,开发者需填写联系方式供用户联系开发者用于行使查阅、复制、更正、删除等法定权利。

若开发者在微信小程序内提供其他的用户可以行使查阅、复制、更正、删除等法定权利的入口,可以通过补充文档进行说明。

开发者对信息的存储

开发者需声明对信息的存储期限,如

  固定存储期限:180天

信息的使用规则

  1. 开发者将会在本指引所明示的用途内使用收集的信息。
  2. 如开发者使用你的信息超出本指引目的或合理范围,开发者必须在变更使用目的或范围前,再次以弹窗方式告知并征得你的明示同意。

信息对外提供

  1. 开发者承诺,不会主动共享或转让你的信息至任何第三方,如存在确需共享或转让时,开发者应当直接征得或确认第三方征得你的单独同意。
  2. 开发者承诺,不会对外公开披露你的信息,如必须公开披露时,开发者应当向你告知公开披露的目的、披露信息的类型及可能涉及的信息,并征得你的单独同意。

联系方式

  你认为开发者未遵守上述约定,或有其他的投诉建议、或未成年人个人信息保护相关问题,可通过以下方式与开发者联系;或者向微信进行投诉。
  - 邮箱 : miniprogram@**.com

补充文档

开发者可选择是否上传补充文档,微信会对文档内容进行审核。

当前文档格式只支持txt格式的纯文本文件,大小不超过100KB。

日期

  更新日期:2021-11-03
  生效日期:2021-11-03

Component

创建自定义组件,接受一个 Object 类型的参数。

参数

Object object

定义段 类型 是否必填 描述 最低版本
properties Object Map 否 组件的对外属性,是属性名到属性设置的映射表
data Object 否 组件的内部数据,和 properties 一同用于组件的模板渲染
observers Object 否 组件数据字段监听器,用于监听 properties 和 data 的变化,参见 数据监听器 ‘2.6.1’
methods Object 否 组件的方法,包括事件响应函数和任意的自定义方法,关于事件响应函数的使用,参见 组件间通信与事件
behaviors String Array 否 类似于mixins和traits的组件间代码复用机制,参见 behaviors
created Function 否 组件生命周期函数-在组件实例刚刚被创建时执行,注意此时不能调用 setData
attached Function 否 组件生命周期函数-在组件实例进入页面节点树时执行
ready Function 否 组件生命周期函数-在组件布局完成后执行
moved Function 否 组件生命周期函数-在组件实例被移动到节点树另一个位置时执行
detached Function 否 组件生命周期函数-在组件实例被从页面节点树移除时执行
relations Object 否 组件间关系定义,参见 组件间关系
externalClasses String Array 否 组件接受的外部样式类,参见 外部样式类
options Object Map 否 一些选项(文档中介绍相关特性时会涉及具体的选项设置,这里暂不列举)
lifetimes Object 否 组件生命周期声明对象,参见 组件生命周期 ‘2.2.3’
pageLifetimes Object 否 组件所在页面的生命周期声明对象,参见 组件生命周期 ‘2.2.3’

生成的组件实例可以在组件的方法、生命周期函数和属性 observer 中通过 this 访问。组件包含一些通用属性和方法。

属性名 类型 描述
is String 组件的文件路径
id String 节点id
dataset String 节点dataset
data Object 组件数据,包括内部数据和属性值
properties Object 组件数据,包括内部数据和属性值(与 data 一致)
router Object 相对于当前自定义组件的 Router 对象
pageRouter Object 相对于当前自定义组件所在页面的 Router 对象
renderer string 渲染当前组件的渲染后端
方法名 参数 描述 最低版本
setData Object newData 设置data并执行视图层渲染
hasBehavior Object behavior 检查组件是否具有 behavior (检查时会递归检查被直接或间接引入的所有behavior)
triggerEvent String name, Object detail, Object options 触发事件,参见 组件间通信与事件
createSelectorQuery 创建一个 SelectorQuery 对象,选择器选取范围为这个组件实例内
createIntersectionObserver 创建一个 IntersectionObserver 对象,选择器选取范围为这个组件实例内
createMediaQueryObserver 创建一个 MediaQueryObserver 对象 ‘2.11.1’
selectComponent String selector 使用选择器选择组件实例节点,返回匹配到的第一个组件实例对象(会被 wx://component-export 影响)
selectAllComponents String selector 使用选择器选择组件实例节点,返回匹配到的全部组件实例对象组成的数组(会被 wx://component-export 影响)
selectOwnerComponent 选取当前组件节点所在的组件实例(即组件的引用者),返回它的组件实例对象(会被 wx://component-export 影响) ‘2.8.2’
getRelationNodes String relationKey 获取这个关系所对应的所有关联节点,参见 组件间关系
groupSetData Function callback 立刻执行 callback ,其中的多个 setData 之间不会触发界面绘制(只有某些特殊场景中需要,如用于在不同组件同时 setData 时进行界面绘制同步) ‘2.4.0’
getTabBar 返回当前页面的 custom-tab-bar 的组件实例,详见自定义 tabBar ‘2.6.2’
getPageId 返回页面标识符(一个字符串),可以用来判断几个自定义组件实例是不是在同一个页面内 ‘2.7.1’
animate String selector, Array keyframes, Number duration, Function callback 执行关键帧动画,详见动画 ‘2.9.0’
clearAnimation String selector, Object options, Function callback 清除关键帧动画,详见动画 ‘2.9.0’
applyAnimatedStyle String selector, Function updater, Object config, Function callback 绑定由 worklet 驱动的样式到相应的节点,详见worklet 动画 ‘2.29.0’
clearAnimatedStyle String selector, Array styleIds, Function callback 清除节点上 worklet 驱动样式的绑定关系 ‘2.30.1’
setUpdatePerformanceListener Object options, Function listener 设置更新性能统计信息接收函数,详见获取更新性能统计信息 ‘2.12.0’

applyAnimatedStyle 参数定义

定义段 类型 是否必填 描述 最低版本
selector String 是 节点选择器 ‘2.29.0’
updater Function 是 worklet 样式更新函数 ‘2.29.0’
userConfig Object 否 配置项 ‘2.30.1’
callback Function 否 完成样式绑定的回调 ‘2.30.1’

配置项定义

属性 类型 默认值 描述
immediate boolean true 是否立即执行一次 updater 函数
flush string async 刷新时机,枚举值 async / sync

selector 语法同 SelectorQuery.select。

默认情况下,updater 函数将被执行一次,其结果作为初值被应用到节点上,设置 immediate: false 则跳过首次执行。

updater 函数返回的 StyleObject 支持的样式集,参考 skyline wxss 样式。StyleObject 的 key 为 css 属性的驼峰写法。

当依赖的 sharedValue 值更新时,updater 函数将被重新执行,并将新的 style 应用到选中节点上。默认情况下,新的样式会在下一个渲染时间片上生效(性能更好),设置 flush: sync 可使得在当前渲染时间片上生效。

callback 回调返回的 styleId,可用于清除样式绑定。

const offset = shared(0)
const styleIds = []
this.applyAnimatedStyle('.box', () => {
  'worklet'
  return {
    transform: `translateX(${offset.value}px) rotate(30deg)`
  }
}, {
  immediate: true,
  flush: 'async'
}, (res) => {
  console.log('animatedStyle 已绑定到节点 ', res.styleId)
  styleIds.push(res.styleId)
})

this.clearAnimatedStyle('.box', styleIds, () => {
  console.log('animatedStyle 已清除绑定')
})

clearAnimatedStyle 参数定义

定义段 类型 是否必填 描述 最低版本
selector String 是 节点选择器 ‘2.30.1’
styleIds Array<Number> 是 需要清除的 styleId 集合 ‘2.30.1’
callback Function 否 清除样式绑定的回调 ‘2.30.1’

styleIds 数组为空,则清除选中节点上所有绑定的 animatedStyle,需要注意的是样式并不会重置,只是解除了依赖关系。styleId 可由 applyAnimatedStyle 回调参数中获取。

节点移除时,相关的 animatedStyle 会自动释放,clearAnimatedStyle 可用于需要提前解绑的情况。

示例代码

在开发者工具中预览效果

Component({

  behaviors: [],

  // 属性定义(详情参见下文)
  properties: {
    myProperty: { // 属性名
      type: String,
      value: ''
    },
    myProperty2: String // 简化的定义方式
  },

  data: {}, // 私有数据,可用于模板渲染

  lifetimes: {
    // 生命周期函数,可以为函数,或一个在methods段中定义的方法名
    attached: function () { },
    moved: function () { },
    detached: function () { },
  },

  // 生命周期函数,可以为函数,或一个在methods段中定义的方法名
  attached: function () { }, // 此处attached的声明会被lifetimes字段中的声明覆盖
  ready: function() { },

  pageLifetimes: {
    // 组件所在页面的生命周期函数
    show: function () { },
    hide: function () { },
    resize: function () { },
  },

  methods: {
    onMyButtonTap: function(){
      this.setData({
        // 更新属性和数据的方法与更新页面数据的方法类似
      })
    },
    // 内部方法建议以下划线开头
    _myPrivateMethod: function(){
      // 这里将 data.A[0].B 设为 'myPrivateData'
      this.setData({
        'A[0].B': 'myPrivateData'
      })
    },
    _propertyChange: function(newVal, oldVal) {

    }
  }

})

注意:在 properties 定义段中,属性名采用驼峰写法(propertyName);在 wxml 中,指定属性值时则对应使用连字符写法(component-tag-name property-name="attr value"),应用于数据绑定时采用驼峰写法(attr="")。

properties 定义

定义段 类型 是否必填 描述 最低版本
type 是 属性的类型
optionalTypes Array 否 属性的类型(可以指定多个) ‘2.6.5’
value 否 属性的初始值
observer Function 否 属性值变化时的回调函数

属性值的改变情况可以使用 observer 来监听。目前,在新版本基础库中不推荐使用这个字段,而是使用 Component 构造器的 observers 字段代替,它更加强大且性能更好。

请注意: 定义段中的 type 字段为 必填 项,虽然 ‘2.17.2’ 及以上的基础库增加了对未填写的兼容(未填写时兼容为填写 null),但更低版本的基础库无法处理未填写的情况,最坏可能会使页面无法正常渲染,请注意兼容。

示例代码

Component({
  properties: {
    min: {
      type: Number,
      value: 0
    },
    max: {
      type: Number,
      value: 0,
      observer: function(newVal, oldVal) {
        // 属性值变化时执行
      }
    },
    lastLeaf: {
      // 这个属性可以是 Number 、 String 、 Boolean 三种类型中的一种
      type: Number,
      optionalTypes: [String, Object],
      value: 0
    }
  }
})

属性的类型可以为 String Number Boolean Object Array 其一,也可以为 null 表示不限制类型。

多数情况下,属性最好指定一个确切的类型。这样,在 WXML 中以字面量指定属性值时,值可以获得一个确切的类型,如:

<custom-comp min="1" max="5" />

此时,由于自定义组件的对应属性被规定为 Number 类型, min 和 max 会被赋值为 1 和 5 ,而非 "1" 和 "5" ,即:

this.data.min === 1 // true
this.data.max === 5 // true

Bug & Tip

  • 使用 this.data 可以获取内部数据和属性值;但直接修改它不会将变更应用到界面上,应使用 setData 修改。
  • 生命周期函数无法在组件方法中通过 this 访问到。
  • 属性名应避免以 data 开头,即不要命名成 dataXyz 这样的形式,因为在 WXML 中, data-xyz="" 会被作为节点 dataset 来处理,而不是组件属性。
  • 在一个组件的定义和使用时,组件的属性名和 data 字段相互间都不能冲突(尽管它们位于不同的定义段中)。
  • 从基础库 ‘2.0.9’ 开始,对象类型的属性和 data 字段中可以包含函数类型的子字段,即可以通过对象类型的属性字段来传递函数。低于这一版本的基础库不支持这一特性。
  • bug : 位于 slot 中的自定义组件没有触发 pageLifetimes 中声明的页面生命周期,此问题在 ‘2.5.2’ 中修复。
  • bug : 对于 type 为 Object 或 Array 的属性,如果通过该组件自身的 this.setData 来改变属性值的一个子字段,则依旧会触发属性 observer ,且 observer 接收到的 newVal 是变化的那个子字段的值, oldVal 为空, changedPath 包含子字段的字段名相关信息;目前推荐使用 observers 定义段代替。

Router

基础库 ‘2.16.1’ 开始支持,低版本需做兼容处理。

页面路由器对象。可以通过 this.pageRouter 或 this.router 获得当前页面或自定义组件的路由器对象。

路由的相对路径

页面路由器有 switchTab reLaunch redirectTo navigateTo navigateBack 五个方法,与 wx 对象向同名的五个方法 switchTab reLaunch redirectTo navigateTo navigateBack 功能相同;唯一的区别是,页面路由器中的方法调用时,相对路径永远相对于 this 指代的页面或自定义组件。

例如,对于下面这段示例代码:

// index/index.js
Page({
  wxNavAction: function () {
    wx.navigateTo({
      url: './new-page'
    })
  },
  routerNavAction: function () {
    this.pageRouter.navigateTo({
      url: './new-page'
    })
  }
})

页面 index/index 的 js 代码如上所示。如果此时已经跳转到了一个新页面 pack/index ,然后才调用到上面的 wxNavAction 方法,跳转的新页面路径将是 pack/new-page ;而如果调用的是 routerNavAction 方法,跳转的新页面路径仍然是 index/new-page 。

换而言之, this.pageRouter 获得的路由器对象具有更好的基路径稳定性。通常情况下,使用 this.pageRouter.navigateTo 代替 wx.navigateTo 是更优的。

相对于自定义组件路径的路由

this.pageRouter 和 this.router 在页面中将获得同样的页面路由器对象。

但如果在自定义组件中调用, this.pageRouter 将相对于自定义组件所在的页面来进行路由跳转,而 this.router 相对于自定义组件自身的路径。

getCurrentPages()

获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。

注意事项

  • 不要尝试修改页面栈,否则会导致路由以及页面状态错误。
  • 不要在 App.onLaunch 的时候调用 getCurrentPages(),因为此时 page 还没有生成。

插件用户隐私保护说明内容介绍

微信插件用户隐私保护说明包括下列板块,其中具体的说明仅为示例。

插件基本信息

包括插件名称、插件提供方名称。

  插件名称:客服助手
  插件提供方名称: 深圳市腾讯计算机系统有限公司

插件处理的信息

开发者需在此板块声明所处理的用户信息,微信小程序会根据插件版本隐私接口调用情况展示必填项,开发者可自主勾选其他项目。

  - 开发者收集你选中的照片或视频信息,用于在客服会话中发送图片或视频类型的聊天内容。
  - 为了发送语音类型的聊天内容,开发者将在获取你的明示同意后,访问你的麦克风。

隐私接口与对应的处理的信息关系如下:

处理的信息 接口或组件
收集你的昵称、头像 <button open-type="chooseAvatar">、<input type="nickname">、<functional-page-navigator name="loginAndGetUserInfo">、wx.getUserInfo (已回收)
收集你的位置信息 wx.authorizeForMiniProgram({scope:’scope.userLocation’})、wx.getLocation、wx.startLocationUpdate、wx.getFuzzyLocation
收集你选择的位置信息 wx.choosePoi、wx.chooseLocation
收集你的地址 wx.chooseAddress
收集你的发票信息 wx.chooseInvoiceTitle、wx.chooseInvoice
收集你选中的照片或视频信息 wx.chooseImage、wx.chooseMedia、wx.chooseVideo
访问你的麦克风 wx.authorizeForMiniProgram({scope: ‘scope.record’})、wx.startRecord、RecorderManager.start、<live-pusher>、wx.joinVoIPChat
访问你的摄像头 wx.authorizeForMiniProgram({scope: ‘scope.camera’})、wx.createVKSession、<camera>、<live-pusher>、<voip-room>
访问你的蓝牙 wx.openBluetoothAdapter、wx.createBLEPeripheralServer
使用你的相册(仅写入)权限 wx.authorizeForMiniProgram({scope: ‘scope.writePhotosAlbum’})、wx.saveImageToPhotosAlbum、wx.saveVideoToPhotosAlbum
使用你的通讯录(仅写入)权限 wx.addPhoneContact
调用你的加速传感器 wx.startAccelerometer
调用你的磁场传感器 wx.startCompass
调用你的方向传感器 wx.startDeviceMotionListening
调用你的陀螺仪传感器 wx.startGyroscope
读取你的剪切板 wx.setClipboardData、wx.getClipboardData

Page(Object object)

注册微信小程序中的一个页面。接受一个 Object 类型参数,用于指定页面的初始数据、生命周期回调、事件处理函数等。

参数

Object object

属性 类型 默认值 必填 说明
data Object 页面的初始数据
options Object 页面的组件选项,同 Component 构造器 中的 options ,需要基础库版本 ‘2.10.1’
behaviors String Array 类似于 mixins 和 traits 的组件间代码复用机制,参见 behaviors,需要基础库版本 ‘2.9.2’
onLoad function 生命周期回调—监听页面加载
onShow function 生命周期回调—监听页面显示
onReady function 生命周期回调—监听页面初次渲染完成
onHide function 生命周期回调—监听页面隐藏
onUnload function 生命周期回调—监听页面卸载
onRouteDone function 生命周期回调—监听路由动画完成
onPullDownRefresh function 监听用户下拉动作
onReachBottom function 页面上拉触底事件的处理函数
onShareAppMessage function 用户点击右上角转发
onShareTimeline function 用户点击右上角转发到朋友圈
onAddToFavorites function 用户点击右上角收藏
onPageScroll function 页面滚动触发事件的处理函数
onResize function 页面尺寸改变时触发,详见 响应显示区域变化
onTabItemTap function 当前是 tab 页时,点击 tab 时触发
onSaveExitState function 页面销毁前保留状态回调
其他 any 开发者可以添加任意的函数或数据到 Object 参数中,在页面的函数中用 this 可以访问。这部分属性会在页面实例创建时进行一次深拷贝。

示例代码

//index.js
Page({
  data: {
    text: "This is page data."
  },
  onLoad: function(options) {
    // Do some initialize when page load.
  },
  onShow: function() {
    // Do something when page show.
  },
  onReady: function() {
    // Do something when page ready.
  },
  onHide: function() {
    // Do something when page hide.
  },
  onUnload: function() {
    // Do something when page close.
  },
  onPullDownRefresh: function() {
    // Do something when pull down.
  },
  onReachBottom: function() {
    // Do something when page reach bottom.
  },
  onShareAppMessage: function () {
    // return custom share data when user share.
  },
  onPageScroll: function() {
    // Do something when page scroll
  },
  onResize: function() {
    // Do something when page resize
  },
  onTabItemTap(item) {
    console.log(item.index)
    console.log(item.pagePath)
    console.log(item.text)
  },
  // Event handler.
  viewTap: function() {
    this.setData({
      text: 'Set some data for updating view.'
    }, function() {
      // this is setData callback
    })
  },
  customData: {
    hi: 'MINA'
  }
})

data

data 是页面第一次渲染使用的初始数据。

页面加载时,data 会以 JSON 字符串的形式从逻辑层传到渲染层,所以 data 中的数据必须是能转成 JSON 的类型:字符串、数字、布尔值、对象、数组。

渲染层可以通过 WXML 对数据进行绑定。

示例代码:

在开发者工具中预览效果

<view>{{text}}</view>
<view>{{array[0].msg}}</view>
Page({
  data: {
    text: 'init data',
    array: [{msg: '1'}, {msg: '2'}]
  }
})

生命周期回调函数

生命周期的触发以及页面的路由方式详见

onLoad(Object query)

页面加载时触发。一个页面只会调用一次,可以在 onLoad 的参数中获取打开当前页面路径中的参数。

参数:

名称 类型 说明
query Object 打开当前页面路径中的参数

onShow()

页面显示或切入前台时触发。

onReady()

页面初次渲染完成时触发。一个页面只会调用一次,表示页面已经准备好,可以和视图层进行交互。

注意:对界面内容进行设置的 API 如 wx.setNavigationBarTitle,请在 onReady 之后进行。详见生命周期

onHide()

页面隐藏或切入后台时触发。例如使用 wx.navigateTo 或底部 tab 切换到其他页面,微信小程序切入后台等。

onUnload()

页面卸载时触发。例如使用 wx.redirectTo 或 wx.navigateBack 切换到其他页面时。

onRouteDone()

路由动画完成时触发。例如 wx.navigateTo 页面完全推入后,或 wx.navigateBack 页面完全恢复时。

页面事件处理函数

onPullDownRefresh()

监听用户下拉刷新事件。

  • 需要在 app.json 的 window 选项中或页面配置中开启 enablePullDownRefresh。
  • 可以通过 wx.startPullDownRefresh 触发下拉刷新,调用后会触发下拉刷新动画,效果与用户手动下拉刷新一致。
  • 当处理完数据刷新后,wx.stopPullDownRefresh 可以停止当前页面的下拉刷新。

onReachBottom()

监听用户上拉触底事件。

  • 可以在 app.json 的 window 选项中或页面配置中设置触发距离 onReachBottomDistance。
  • 在触发距离内滑动期间,本事件只会被触发一次。

onPageScroll(Object object)

监听用户滑动页面事件。

参数 Object object:

属性 类型 说明
scrollTop Number 页面在垂直方向已滚动的距离(单位 px)

注意:请只在需要的时候才在 page 中定义此方法,不要定义空方法。以减少不必要的事件派发对渲染层-逻辑层通信的影响。 注意:请避免在 onPageScroll 中过于频繁的执行 setData 等引起逻辑层-渲染层通信的操作。尤其是每次传输大量数据,会影响通信耗时。

onAddToFavorites(Object object)

本接口为 Beta 版本,安卓 7.0.15 版本起支持,暂只在安卓平台支持

监听用户点击右上角菜单“收藏”按钮的行为,并自定义收藏内容。

参数 Object object:

参数 类型 说明
webViewUrl String 页面中包含web-view组件时,返回当前web-view的url

此事件处理函数需要 return 一个 Object,用于自定义收藏内容:

字段 说明 默认值
title 自定义标题 页面标题或账号名称
imageUrl 自定义图片,显示图片长宽比为 1:1 页面截图
query 自定义query字段 当前页面的query

示例代码

Page({
  onAddToFavorites(res) {
    // webview 页面返回 webViewUrl
    console.log('webViewUrl: ', res.webViewUrl)
    return {
      title: '自定义标题',
      imageUrl: 'http://demo.png',
      query: 'name=xxx&age=xxx',
    }
  }
})

onShareAppMessage(Object object)

监听用户点击页面内转发按钮(button 组件 open-type="share")或右上角菜单“转发”按钮的行为,并自定义转发内容。

注意:只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮

参数 Object object:

参数 类型 说明 最低版本
from String 转发事件来源。
button:页面内转发按钮;
menu:右上角转发菜单
‘1.2.4’
target Object 如果 from 值是 button,则 target 是触发这次转发事件的 button,否则为 undefined ‘1.2.4’
webViewUrl String 页面中包含web-view组件时,返回当前web-view的url ‘1.6.4’

此事件处理函数需要 return 一个 Object,用于自定义转发内容,返回内容如下:

自定义转发内容 基础库 ‘2.8.1’ 起,分享图支持云图片。

字段 说明 默认值 最低版本
title 转发标题 当前微信小程序名称
path 转发路径 当前页面 path ,必须是以 / 开头的完整路径
imageUrl 自定义图片路径,可以是本地文件路径、代码包文件路径或者网络图片路径。支持PNG及JPG。显示图片长宽比是 5:4。 使用默认截图 ‘1.5.0’
promise 如果该参数存在,则以 resolve 结果为准,如果三秒内不 resolve,分享会使用上面传入的默认参数 ‘2.12.0’

示例代码

在开发者工具中预览效果

Page({
  onShareAppMessage() {
    const promise = new Promise(resolve => {
      setTimeout(() => {
        resolve({
          title: '自定义转发标题'
        })
      }, 2000)
    })
    return {
      title: '自定义转发标题',
      path: '/page/user?id=123',
      promise 
    }
  }
})

onShareTimeline()

基础库 ‘2.11.3’ 开始支持,低版本需做兼容处理。

详见分享到朋友圈

监听右上角菜单“分享到朋友圈”按钮的行为,并自定义分享内容。

注意:只有定义了此事件处理函数,右上角菜单才会显示“分享到朋友圈”按钮

自定义转发内容

事件处理函数返回一个 Object,用于自定义分享内容,不支持自定义页面路径,返回内容如下:

字段 说明 默认值 最低版本
title 自定义标题,即朋友圈列表页上显示的标题 当前微信小程序名称
query 自定义页面路径中携带的参数,如 path?a=1&b=2 的 “?” 后面部分 当前页面路径携带的参数
imageUrl 自定义图片路径,可以是本地文件或者网络图片。支持 PNG 及 JPG,显示图片长宽比是 1:1。 默认使用微信小程序 Logo
promise 如果该参数存在,则以 resolve 结果为准,如果三秒内不 resolve,分享会使用上面传入的默认参数 ‘3.12.0’

示例代码

Page({
  onShareTimeline() {
    const promise = new Promise(resolve => {
      setTimeout(() => {
        resolve({
          title: '自定义转发标题'
        })
      }, 2000)
    })
    return {
      title: '自定义转发标题',
      query: 'id=123',
      imageUrl: '/images/share.png',
      promise
    }
  }
})

onResize(Object object)

基础库 ‘2.4.0’ 开始支持,低版本需做兼容处理。

页面尺寸改变时触发。详见 响应显示区域变化

onTabItemTap(Object object)

基础库 ‘1.9.0’ 开始支持,低版本需做兼容处理。

点击 tab 时触发

Object 参数说明:

参数 类型 说明 最低版本
index String 被点击tabItem的序号,从0开始 ‘1.9.0’
pagePath String 被点击tabItem的页面路径 ‘1.9.0’
text String 被点击tabItem的按钮文字 ‘1.9.0’

示例代码:

Page({
  onTabItemTap(item) {
    console.log(item.index)
    console.log(item.pagePath)
    console.log(item.text)
  }
})

onSaveExitState()

基础库 ‘2.7.4’ 开始支持,低版本需做兼容处理。

每当微信小程序可能被销毁之前,页面回调函数 onSaveExitState 会被调用,可以进行退出状态的保存。

组件事件处理函数

Page 中还可以定义组件事件处理函数。在渲染层的组件中加入事件绑定,当事件被触发时,就会执行 Page 中定义的事件处理函数。

示例代码:

在开发者工具中预览效果

<view bindtap="viewTap"> click me </view>
Page({
  viewTap: function() {
    console.log('view tap')
  }
})

Page.route

基础库 ‘1.2.0’ 开始支持,低版本需做兼容处理。

到当前页面的路径,类型为String。

Page({
  onShow: function() {
    console.log(this.route)
  }
})

Page.prototype.setData(Object data, Function callback)

setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)。

参数说明

字段 类型 必填 描述 最低版本
data Object 是 这次要改变的数据
callback Function 否 setData引起的界面更新渲染完毕后的回调函数 ‘1.5.0’

Object 以 key: value 的形式表示,将 this.data 中的 key 对应的值改变成 value。

其中 key 可以以数据路径的形式给出,支持改变数组中的某一项或对象的某个属性,如 array[2].message,a.b.c.d,并且不需要在 this.data 中预先定义。

注意:

  1. 直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致。
  2. 仅支持设置可 JSON 化的数据。
  3. 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。
  4. 请不要把 data 中任何一项的 value 设为 undefined ,否则这一项将不被设置并可能遗留一些潜在问题。

示例代码:

在开发者工具中预览效果

<!--index.wxml-->
<view>{{text}}</view>
<button bindtap="changeText"> Change normal data </button>
<view>{{num}}</view>
<button bindtap="changeNum"> Change normal num </button>
<view>{{array[0].text}}</view>
<button bindtap="changeItemInArray"> Change Array data </button>
<view>{{object.text}}</view>
<button bindtap="changeItemInObject"> Change Object data </button>
<view>{{newField.text}}</view>
<button bindtap="addNewField"> Add new data </button>
// index.js
Page({
  data: {
    text: 'init data',
    num: 0,
    array: [{text: 'init data'}],
    object: {
      text: 'init data'
    }
  },
  changeText: function() {
    // this.data.text = 'changed data' // 不要直接修改 this.data
    // 应该使用 setData
    this.setData({
      text: 'changed data'
    })
  },
  changeNum: function() {
    // 或者,可以修改 this.data 之后马上用 setData 设置一下修改了的字段
    this.data.num = 1
    this.setData({
      num: this.data.num
    })
  },
  changeItemInArray: function() {
    // 对于对象或数组字段,可以直接修改一个其下的子字段,这样做通常比修改整个对象或数组更好
    this.setData({
      'array[0].text':'changed data'
    })
  },
  changeItemInObject: function(){
    this.setData({
      'object.text': 'changed data'
    });
  },
  addNewField: function() {
    this.setData({
      'newField.text': 'new data'
    })
  }
})

页面间通信

基础库 ‘2.7.3’ 开始支持,低版本需做兼容处理。

如果一个页面由另一个页面通过 wx.navigateTo 打开,这两个页面间将建立一条数据通道:

  • 被打开的页面可以通过 this.getOpenerEventChannel() 方法来获得一个 EventChannel 对象;
  • wx.navigateTo 的 success 回调中也包含一个 EventChannel 对象。

这两个 EventChannel 对象间可以使用 emit 和 on 方法相互发送、监听事件。

在开发者工具中预览效果

获取应用实例对象

获取到微信小程序全局唯一的 App 实例。

参数

Object object

属性 类型 默认值 必填 说明 最低版本
allowDefault boolean false 否 在 App 未定义时返回默认实现。当App被调用时,默认实现中定义的属性会被覆盖合并到App中。一般用于独立分包 ‘2.2.4’

示例代码

// other.js
var appInstance = getApp()
console.log(appInstance.globalData) // I am global data

注意事项

  • 不要在定义于 App() 内的函数中,或调用 App 前调用 getApp() ,使用 this 就可以拿到 app 实例。
  • 通过 getApp() 获取实例之后,不要私自调用生命周期函数。

App(Object object)

注册微信小程序。接受一个 Object 参数,其指定微信小程序的生命周期回调等。

App() 必须在 app.js 中调用,必须调用且只能调用一次。不然会出现无法预期的后果。

参数

Object object

属性 类型 默认值 必填 说明 最低版本
onLaunch function 否 生命周期回调——监听微信小程序初始化。
onShow function 否 生命周期回调——监听微信小程序启动或切前台。
onHide function 否 生命周期回调——监听微信小程序切后台。
onError function 否 错误监听函数。
onPageNotFound function 否 页面不存在监听函数。 ‘1.9.90’
onUnhandledRejection function 否 未处理的 Promise 拒绝事件监听函数。 ‘2.10.0’
onThemeChange function 否 监听系统主题变化 ‘2.11.0’
其他 any 否 开发者可以添加任意的函数或数据变量到 Object 参数中,用 this 可以访问

关于微信小程序前后台的定义和微信小程序的运行机制,请参考运行机制章节。

onLaunch(Object object)

微信小程序初始化完成时触发,全局只触发一次。参数也可以使用 wx.getLaunchOptionsSync 获取。

参数:与 wx.getLaunchOptionsSync 一致

onShow(Object object)

微信小程序启动,或从后台进入前台显示时触发。也可以使用 wx.onAppShow 绑定监听。

参数:与 wx.onAppShow 一致

onHide()

微信小程序从前台进入后台时触发。也可以使用 wx.onAppHide 绑定监听。

参数:与 wx.onAppHide 一致

onError(String error)

微信小程序发生脚本错误或 API 调用报错时触发。也可以使用 wx.onError 绑定监听。

参数:与 wx.onError 一致

onPageNotFound(Object object)

基础库 ‘1.9.90’ 开始支持,低版本需做兼容处理。

微信小程序要打开的页面不存在时触发。也可以使用 wx.onPageNotFound 绑定监听。注意事项请参考 wx.onPageNotFound。

参数:与 wx.onPageNotFound 一致

示例代码:

App({
  onPageNotFound(res) {
    wx.redirectTo({
      url: 'pages/...'
    }) // 如果是 tabbar 页面,请使用 wx.switchTab
  }
})

onUnhandledRejection(Object object)

基础库 ‘2.10.0’ 开始支持,低版本需做兼容处理。

微信小程序有未处理的 Promise 拒绝时触发。也可以使用 wx.onUnhandledRejection 绑定监听。注意事项请参考 wx.onUnhandledRejection。

参数:与 wx.onUnhandledRejection 一致

onThemeChange(Object object)

基础库 ‘2.11.0’ 开始支持,低版本需做兼容处理。

系统切换主题时触发。也可以使用 wx.onThemeChange 绑定监听。

参数:与 wx.onThemeChange 一致

示例代码

App({
  onLaunch (options) {
    // Do something initial when launch.
  },
  onShow (options) {
    // Do something when show.
  },
  onHide (options) {
    // Do something when hide.
  },
  onError (msg) {
    console.log(msg)
  },
  globalData: 'I am global data'
})

场景值列表

关于场景值的详细说明和获取方式请参考 指南-场景值

场景值ID 说明 图例
1000 其他 /
1001 发现页微信小程序「最近使用」列表(基础库2.2.4-2.29.0版本包含「我的微信小程序」列表,2.29.1版本起仅为「最近使用」列表) /
1005 微信首页顶部搜索框的搜索结果页
1006 发现栏微信小程序主入口搜索框的搜索结果页
1007 单人聊天会话中的微信小程序消息卡片
1008 群聊会话中的微信小程序消息卡片
1010 收藏夹
1011 扫描二维码
1012 长按图片识别二维码
1013 扫描手机相册中选取的二维码
1014 微信小程序订阅消息(与1107相同)
1017 前往微信小程序体验版的入口页
1019 微信钱包(微信客户端7.0.0版本改为支付入口)
1020 公众号 profile 页相关微信小程序列表(已废弃)
1022 聊天顶部置顶微信小程序入口(微信客户端6.6.1版本起废弃) /
1023 安卓系统桌面图标
1024 微信小程序 profile 页
1025 扫描一维码
1026 发现栏微信小程序主入口,「附近的微信小程序」列表
1027 微信首页顶部搜索框搜索结果页「使用过的微信小程序」列表
1028 我的卡包
1029 微信小程序中的卡券详情页
1030 自动化测试下打开微信小程序 /
1031 长按图片识别一维码
1032 扫描手机相册中选取的一维码
1034 微信支付完成页
1035 公众号自定义菜单
1036 App 分享消息卡片
1037 微信小程序打开微信小程序
1038 从另一个微信小程序返回
1039 摇电视
1042 添加好友搜索框的搜索结果页
1043 公众号模板消息
1044 带 shareTicket 的微信小程序消息卡片 详情
1045 朋友圈广告
1046 朋友圈广告详情页
1047 扫描微信小程序码
1048 长按图片识别微信小程序码
1049 扫描手机相册中选取的微信小程序码
1052 卡券的适用门店列表
1053 搜一搜的结果页
1054 顶部搜索框微信小程序快捷入口(微信客户端版本6.7.4起废弃) /
1056 聊天顶部音乐播放器右上角菜单
1057 钱包中的银行卡详情页
1058 公众号文章
1059 体验版微信小程序绑定邀请页 /
1060 微信支付完成页(与1034相同) /
1064 微信首页连Wi-Fi状态栏
1065 URL scheme 详情 /
1067 公众号文章广告
1068 附近微信小程序列表广告(已废弃) /
1069 移动应用通过openSDK进入微信,打开微信小程序
1071 钱包中的银行卡列表页
1072 二维码收款页面
1073 客服消息列表下发的微信小程序消息卡片
1074 公众号会话下发的微信小程序消息卡片
1077 摇周边
1078 微信连Wi-Fi成功提示页
1079 微信游戏中心
1081 客服消息下发的文字链
1082 公众号会话下发的文字链
1084 朋友圈广告原生页
1088 会话中查看系统消息,打开微信小程序 /
1089 微信聊天主界面下拉,「最近使用」栏(基础库2.2.4-2.29.0版本包含「我的微信小程序」栏,2.29.1版本起仅为「最近使用」栏)
1090 长按微信小程序右上角菜单唤出最近使用历史
1091 公众号文章商品卡片
1092 城市服务入口
1095 微信小程序广告组件
1096 聊天记录,打开微信小程序
1097 微信支付签约原生页,打开微信小程序
1099 页面内嵌插件 /
1100 红包封面详情页打开微信小程序
1101 远程调试热更新(开发者工具中,预览 -> 自动预览 -> 编译并预览)
1102 公众号 profile 页服务预览
1103 发现页微信小程序「我的微信小程序」列表(基础库2.2.4-2.29.0版本废弃,2.29.1版本起生效) /
1104 微信聊天主界面下拉,「我的微信小程序」栏(基础库2.2.4-2.29.0版本废弃,2.29.1版本起生效) /
1106 聊天主界面下拉,从顶部搜索结果页,打开微信小程序 /
1107 订阅消息,打开微信小程序 /
1113 安卓手机负一屏,打开微信小程序(三星) /
1114 安卓手机侧边栏,打开微信小程序(三星) /
1119 【企业微信】工作台内打开微信小程序
1120 【企业微信】个人资料页内打开微信小程序
1121 【企业微信】聊天加号附件框内打开微信小程序
1124 扫“一物一码”打开微信小程序 /
1125 长按图片识别“一物一码” /
1126 扫描手机相册中选取的“一物一码” /
1129 微信爬虫访问 /
1131 浮窗(8.0版本起仅包含被动浮窗) /
1133 硬件设备打开微信小程序 详情 /
1135 微信小程序profile页相关微信小程序列表,打开微信小程序
1144 公众号文章 – 视频贴片
1145 发现栏 – 发现微信小程序
1146 打开地理位置信息,进入出行类微信小程序
1148 卡包中的交通卡,打开微信小程序 /
1150 扫一扫商品条码后,在结果页打开微信小程序
1151 发现栏中的“我的订单”
1152 订阅号视频中打开微信小程序
1153 “识物”功能的结果页中打开微信小程序
1154 在朋友圈内打开“单页模式”
1155 通过“单页模式”打开微信小程序
1157 服务号会话页面中打开微信小程序
1158 群工具中打开微信小程序
1160 群待办
1167 H5 页面通过开放标签打开微信小程序 详情 /
1168 移动应用或网站应用直接运行微信小程序 /
1169 发现栏中微信小程序的主入口,以及各个生活服务入口(例如快递服务、出行服务等)
1171 微信运动记录(仅限安卓系统)
1173 聊天中的素材通过微信小程序打开 详情
1175 视频号主页的商店入口
1176 视频号直播间中,主播打开微信小程序
1177 视频号直播中的商品
1178 在电脑上打开手机上正在使用的微信小程序
1179 通过#话题页打开微信小程序
1181 网站应用打开PC版微信小程序 /
1183 PC微信 – 微信小程序面板 – 发现微信小程序 – 搜索
1184 视频号链接打开微信小程序
1185 群公告
1186 收藏中的笔记
1187 浮窗(从8.0版本开始)或星标
1189 表情雨广告
1191 视频号活动
1192 企业微信联系人的个人资料页
1193 视频号主页的服务菜单中打开微信小程序
1194 URL Link 详情 /
1195 视频号主页的商品标签页
1196 个人状态中打开微信小程序
1197 视频号主播从直播间返回小游戏
1198 视频号开播界面中打开小游戏
1200 视频号广告中打开微信小程序
1201 视频号广告详情页中打开微信小程序
1202 企业微信客服号会话中打开微信小程序卡片
1203 微信小程序压测工具的请求 /
1206 视频号小游戏直播间中打开小游戏
1207 企业微信客服号会话中打开微信小程序文字链接
1208 聊天中打开商品卡片
1212 青少年模式申请页面中打开微信小程序
1215 广告预约中打开微信小程序 /
1216 视频号订单中心打开微信小程序
1217 蓝牙设备后台唤醒微信小程序 /
1218 微信键盘预览打开微信小程序 /
1219 视频号直播间小游戏一键上车
1220 发现页设备卡片打开微信小程序
1223 安卓桌面Widget打开微信小程序
1224 “微信小程序商家助手”功能打开微信小程序 /
1225 音视频通话打开微信小程序
1226 聊天消息在设备打开后打开微信小程序
1228 视频号原生广告组件打开微信小程序
1230 订阅号H5广告进入微信小程序
1231 动态消息提醒入口打开微信小程序
1232 搜一搜竞价广告打开微信小程序
1233 微信小程序搜索页人气游戏模块打开小游戏
1238 看一看信息流广告打开微信小程序
1239 视频号小游戏直播间气泡浮窗打开小游戏 /
1242 微信小程序发现页门店快送模块频道页进入微信小程序
1243 微信小程序发现页门店快送模块商品聚合页进入微信小程序 /
1244 #tag搜索结果页打开微信小程序 /
1245 微信小程序发现页门店快送搜索结果页进入微信小程序
1248 通过微信小程序账号迁移进入微信小程序 /
1252 搜一搜微信小程序搜索页「小功能」模块进入微信小程序
1254 发现页「动态」卡片 打开微信小程序
1255 发现页「我的」卡片 打开微信小程序 /
1256 PC端微信小程序面板「最近使用」列表
1257 PC端微信小程序面板「我的微信小程序」列表
1258 PC端微信小程序面板「为电脑端优化」模块
1259 PC端微信小程序面板「小游戏专区」模块
1260 PC端微信小程序面板「推荐在电脑端使用」列表
1261 公众号返佣商品卡片
1265 微信小程序图片详情页打开微信小程序
1266 微信小程序图片长按半屏入口打开微信小程序
1267 微信小程序图片会话角标打开微信小程序
1271 微信聊天主界面下拉,「我的常用微信小程序」栏
1272 发现页「游戏」服务标签打开微信小程序
1273 发现页「常用的微信小程序」列表
1274 优量汇广告打开微信小程序 /
1275 发现页短剧卡片打开微信小程序 /
1276 发现页短剧卡片二级聚合页打开微信小程序 /
1277 发现页短剧卡片搜索结果页打开微信小程序 /
1278 发现页「发现微信小程序」列表打开微信小程序 /
1279 发现页「发现微信小程序」合集页打开微信小程序 /
1280 下拉任务栏微信小程序垂搜「建议使用」打开微信小程序 /
1281 下拉任务栏微信小程序垂搜「发现微信小程序」打开微信小程序 /
1282 听一听播放器打开微信小程序
1285 发现页「发现微信小程序」短剧合集打开微信小程序 /
1286 明文scheme打开微信小程序 /
1287 公众号短剧贴片打开微信小程序 /
1292 发现页「发现微信小程序」POI详情页打开微信小程序 /
1293 发现页短剧卡片追剧页打开微信小程序 /
1295 下拉任务栏微信小程序垂搜「发现微信小程序」广告打开微信小程序 /
1296 视频号付费短剧气泡打开微信小程序 /
1297 发现-微信小程序-搜索「发现微信小程序」打开微信小程序 /
1298 下拉任务栏微信小程序垂搜「发现微信小程序」打开的合集访问微信小程序 /
1299 下拉任务栏微信小程序垂搜「发现微信小程序」POI详情页打开微信小程序 /
1300 发现-微信小程序-搜索「发现微信小程序」打开的合集访问微信小程序 /
1301 发现-微信小程序-搜索「发现微信小程序」poi 详情页打开微信小程序 /
1302 PC端面板「发现微信小程序」 /
1303 发现页短剧卡片视频流打开微信小程序 /
1304 手机负一屏打开微信小程序(比如oppo手机) /
1305 公众号播放结束页打开微信小程序 /
1306 公众号短剧固定选集入口打开微信小程序 /
1307 发现页附近服务境外专区打开微信小程序
1308 PC端面板小游戏专区页面 /
1311 公众号文章打开小游戏CPS卡片 /
1313 PC OpenSDK打开微信小程序 /
1325 聊天工具模式分享的表情包消息角标打开微信小程序 /
1326 聊天工具模式分享的角标打开微信小程序 /
1327 聊天工具模式分享的文本消息角标打开微信小程序 /
1328 聊天工具模式分享的文本消息超链接打开微信小程序 /
1336 小店打开微信小程序关联会员身份 /
1337 小店确认订单页跳微信小程序使用会员权益 /
1340 微信小程序profile-热门商品入口打开微信小程序 /
1346 PC OpenSDK分享微信小程序卡片 /

页面配置

app.json 中的部分配置,也支持对单个页面进行配置,可以在页面对应的 .json 文件来对本页面的表现进行配置。

页面中配置项在当前页面会覆盖 app.json 中相同的配置项(样式相关的配置项属于 app.json 中的 window 属性,但这里不需要额外指定 window 字段),具体的取值和含义可参考全局配置文档中说明。

文件内容为一个 JSON 对象,有以下属性:

配置项

属性 类型 默认值 描述 最低版本
navigationBarBackgroundColor HexColor #000000 导航栏背景颜色,如 #000000
navigationBarTextStyle string white 导航栏标题、状态栏颜色,仅支持 black / white
navigationBarTitleText string 导航栏标题文字内容
navigationStyle string default 导航栏样式,仅支持以下值:
default 默认样式
custom 自定义导航栏,只保留右上角胶囊按钮。
iOS/Android 微信客户端 7.0.0,Windows/Mac 端基础库 >= v3.6.1
homeButton boolean false 在非首页、非页面栈最底层页面或非tabbar内页面中的导航栏展示home键 微信客户端 8.0.24
backgroundColor HexColor #ffffff 窗口的背景色
backgroundColorContent HexColor #RRGGBBAA 页面容器背景色,点击查看设置背景色详情
backgroundTextStyle string dark 下拉 loading 的样式,仅支持 dark / light
backgroundColorTop string #ffffff 顶部窗口的背景色,仅 iOS 支持 微信客户端 6.5.16
backgroundColorBottom string #ffffff 底部窗口的背景色,仅 iOS 支持 微信客户端 6.5.16
enablePullDownRefresh boolean false 是否开启当前页面下拉刷新。
详见 Page.onPullDownRefresh
onReachBottomDistance number 50 页面上拉触底事件触发时距页面底部距离,单位为px。
详见 Page.onReachBottom
pageOrientation string portrait 屏幕旋转设置,支持 auto / portrait / landscape
详见 响应显示区域变化
‘2.4.0’ (auto) / ‘2.5.0’ (landscape)
disableScroll boolean false 设置为 true 则页面整体不能上下滚动。
只在页面配置中有效,无法在 app.json 中设置
usingComponents Object 否 页面自定义组件配置 ‘1.6.3’
initialRenderingCache string 页面初始渲染缓存配置,支持 static / dynamic / capture ‘2.11.1’
style string default 启用新版的组件样式 ‘2.10.2’
singlePage Object 否 单页模式相关配置 ‘2.12.0’
restartStrategy string homePage 重新启动策略配置 ‘2.8.0’
handleWebviewPreload string static 控制预加载下个页面的时机。支持 static / manual / auto ‘2.15.0’
visualEffectInBackground string 否 切入系统后台时,隐藏页面内容,保护用户隐私。支持 hidden / none,若对页面单独设置则会覆盖全局的配置,详见 全局配置 ‘2.15.0’
enablePassiveEvent Object或boolean 否 事件监听是否为 passive,若对页面单独设置则会覆盖全局的配置,详见 全局配置 ‘2.24.1’
renderer string 否 渲染后端 ‘2.30.4’
rendererOptions Object 否 渲染后端选项,详情相关文档 ‘3.1.0’
componentFramework string 否 组件框架,详情相关文档 ‘2.30.4’
  • 注:并不是所有 app.json 中的配置都可以在页面覆盖或单独指定,仅限于本文档包含的选项。
  • 注:iOS/Android 客户端 7.0.0 以下版本,navigationStyle 只在 app.json 中生效。

配置示例

{
  "navigationBarBackgroundColor": "#ffffff",
  "navigationBarTextStyle": "black",
  "navigationBarTitleText": "微信接口功能演示",
  "backgroundColor": "#eeeeee",
  "backgroundTextStyle": "light"
}