硬件返回按钮
硬件返回按钮存在于大多数 Android 设备上。在原生应用中,它可以用来关闭模态框、导航到上一个视图、退出应用等。在 Ionic 中,默认情况下,当按下返回按钮时,当前视图将从导航栈中弹出,并显示上一个视图。如果导航栈中不存在上一个视图,则不会发生任何操作。本指南将展示如何自定义硬件返回按钮的行为。
硬件返回按钮指的是 Android 设备上的物理返回按钮,不应与浏览器返回按钮或 ion-back-button 混淆。本指南中的信息仅适用于 Android 设备。
概述
在支持的环境中,当用户按下硬件返回按钮时,Ionic Framework 会触发 ionBackButton 事件。
监听 ionBackButton 事件时,你可以注册一个处理函数来执行操作。该处理函数可以执行诸如退出应用或打开确认对话框等操作。每个处理函数都必须分配一个优先级。默认情况下,每次按下硬件返回按钮仅触发一个处理函数。优先级值用于确定应调用哪个回调。这很有用,因为如果你打开了模态框,你可能不希望按下硬件返回按钮时模态框关闭_并且_应用向后导航。每次只运行一个处理函数,允许模态框关闭,但仍需要再次按下硬件返回按钮才能向后导航。
在某些情况下,你可能希望触发多个处理函数。每个处理函数回调都会接收一个函数作为参数,该函数可用于告诉 Ionic 调用下一个处理函数。
支持情况
下表显示了硬件返回按钮支持在不同环境中的差异。
| 环境 | 状态 |
|---|---|
| Capacitor | 仅在安装了 @capacitor/app 包时支持。 |
| Cordova | 支持 |
| 浏览器 | 仅当 experimentalCloseWatcher 为 true 且平台支持 Close Watcher API 时支持。 |
| PWA | 仅当 experimentalCloseWatcher 为 true 且平台支持 Close Watcher API 时支持。 |
在浏览器或 PWA 中的硬件返回按钮
通过将 IonicConfig 中的 experimentalCloseWatcher 设为 true,Ionic 可以实验性地在浏览器或 PWA 中处理硬件返回按钮。启用此功能后,Ionic 将使用 Close Watcher API 将任何关闭请求传递给 ionBackButton 事件。这包括按下硬件返回按钮进行导航或按 Escape 键关闭模态框。
Chrome 从 Chrome 120 开始支持 Close Watcher。
为了获得完整的硬件返回按钮支持,我们建议使用 Capacitor 或 Cordova。
如果 Close Watcher 不受支持或 experimentalCloseWatcher 为 false,在浏览器或作为 PWA 运行应用时,ionBackButton 事件将不会触发。
基本用法
- JavaScript
- Angular
- Angular (独立版)
- React
- Vue
document.addEventListener('ionBackButton', (event) => {
event.detail.register(10, () => {
console.log('处理函数被调用!');
});
});