微信小程序返回上一页监听

本文实现的是微信小程序在返回上一页时获取通知并自定义业务。

最简单的实现:

使用 wx.enableAlertBeforeUnload()

优点:快速接入

缺点:手势不能识别、无法自定义弹窗内容(仅询问)

方法二:

page-container + 自定义返回点击

page-container有个好处,能识别返回操作包括三种情形,右滑手势、安卓物理返回键和调用 navigateBack 接口

唯一的缺点就是PC端打开小程序时,点击左上角的返回无法触发。

直接上代码(使用了TDesign 微信小程序组件库,可自行替换):

wxml:

html 复制代码
<view>
    <page-container show="{{visible}}" overlay="{{false}}" bind:beforeleave="onBeforeLeave">
        
    </page-container>
    <view class="block">
            <t-navbar
                t-class-placeholder="t-navbar-placeholder"
                t-class-content="t-navbar-content"
                title="标题文字2"
                t-class-title="nav-title"
            >
                <view slot="left">
                    <t-icon
                        size="48rpx"
                        bind:tap="onNavigateBack"
                        aria-role="button"
                        aria-label="返回"
                        name="chevron-left"
                    />
                </view>
            </t-navbar>
        </view>
        <text>test</text>
        <t-dialog
            visible="{{imageOnMiddleWithImage}}"
            confirm-btn="{{ {content: '确定', variant: 'base' } }}"
            cancel-btn="取消"
            bind:confirm="confirnDialog"
            bind:cancel="closeDialog"
            >
            <t-image slot="top" id="loading-img" shape="round" width="72" height="72" />
        </t-dialog>
</view>
  

js:

javascript 复制代码
Page({

  /**
   * 页面的初始数据
   */
  data: {
    visible: true,
    imageOnMiddleWithImage: false,
    backTime: 0,
  },
  closeDialog() {
    this.setData({
      visible: true, // 点取消,重新展示该页面
      imageOnMiddleWithImage: false,
      backTime: 1,
    });
  },
  confirnDialog() {
    wx.navigateBack({
      delta: 1
    });
  },
  onBeforeLeave() {
    if (this.data.backTime > 0) {
      this.confirnDialog()
      return;
    }
    this.setData({
      imageOnMiddleWithImage: true,
    });
  },
  onNavigateBack() {
    this.onBeforeLeave()
  }
})

使用自定义返回键,监听点击事件;

使用page-container特性,处理所有非点击返回情况下的返回事件。

相关推荐
2501_915921436 小时前
没有Mac如何完成iOS 上架:iOS App 上架App Store流程
android·ios·小程序·https·uni-app·iphone·webview
说私域8 小时前
基于定制开发开源AI智能名片与S2B2C商城小程序的旅游日志创新应用研究
人工智能·小程序·旅游
脑袋大大的8 小时前
钉钉小程序开发环境配置与前端开发指南
小程序·钉钉·企业应用开发
2301_8059629311 小时前
微信小程序控制空调之接收MQTT消息
微信小程序·小程序·esp32
The_era_achievs_hero11 小时前
微信小程序121~130
微信小程序·小程序
難釋懷11 小时前
微信小程序WXSS 模板样式
微信小程序·小程序·notepad++
清颖~11 小时前
原生微信小程序研发,如何对图片进行统一管理?
微信小程序·小程序
军军君0111 小时前
基于Springboot+UniApp+Ai实现模拟面试小工具二:后端项目搭建
前端·javascript·spring boot·spring·微信小程序·前端框架·集成学习
默魔17 小时前
uniapp 微信小程序点击开始倒计时
微信小程序·小程序·uni-app
阿俊-全栈开发1 天前
crmeb多门店对接拉卡拉支付小程序聚合收银台集成全流程详解
小程序·php·拉卡拉聚合收银台·拉卡拉三方支付