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

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

最简单的实现:

使用 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特性,处理所有非点击返回情况下的返回事件。

相关推荐
Kingexpand_com2 小时前
旅游小程序怎么选型?模板与定制二次开发技术对比解析
小程序·旅游·小程序开发·旅行·定制开发
万岳科技系统开发2 小时前
外卖跑腿小程序如何提升本地生活服务平台运营效率?
大数据·小程序·生活
MrFlySand_飞沙3 小时前
uniapp开发微信小程序实现接入企业微信客服
微信小程序·小程序·uni-app·企业微信
码艺-Alimjan3 小时前
JWT 的本质、误区与正确落地:一套不依赖任何框架的架构方法论-微信小程序代码案例-Api 安全性拉满
微信小程序·架构·notepad++
禁止摆烂_才浅3 小时前
微信小程序高频面试题
前端·面试·微信小程序
Ai-_Man3 小时前
豆包智能体把对话批量导出为Word或PDF的正确顺序
人工智能·ai·小程序·pdf·word
mykj15513 小时前
打车顺风车代驾小程序的核心,远不止一个页面
小程序·代驾小程序开发·顺风车小程序·出租车app
show4333 小时前
2026微信小程序批量处理视频文件架构方案:免费批量实测
微信小程序·小程序·架构
lhldsg5 小时前
社区健身系统开发实战:从需求分析到落地部署全流程指南
java·开发语言·小程序·需求分析
街道小厂奔前方5 小时前
你的出行安全锦囊:“友熊地理安全锦囊”使用指南
安全·小程序·地理