Cordova覆盖返回键默认行为后如何恢复默认导航与退出应用功能
Cordova 返回键自定义逻辑问题修复方案
核心问题
- 监听
backbutton事件后,Cordova 原生默认的返回键逻辑会被完全覆盖,不会自动执行 window.history.back()仅能操作应用内的页面历史栈,当历史栈为空(当前处于应用首屏)时,调用该方法无任何效果,无法触发退出应用的原生行为
修复代码
document.addEventListener("backbutton", function(event){ if (dialogService.openDialogs.length > 0) { dialogService.closeAll(); event.preventDefault(); } else { // 历史栈长度大于1时执行页内回退 if (window.history.length > 1) { window.history.back(); } else { // 已到首屏时触发原生退出逻辑 navigator.app.exitApp(); } } })
补充说明
- 该退出逻辑仅适用于Android平台,iOS平台苹果官方禁止应用主动调用退出接口,你可根据业务需求调整iOS端首屏返回的交互逻辑,比如返回系统桌面、弹出二次确认提示等
- 如果你使用了前端路由框架(Vue Router、React Router等),可替换
window.history.length判断为路由实例的栈长度判断,适配自定义路由跳转的场景更准确
内容的提问来源于stack exchange,提问作者John doe
相关产品推荐
相关产品推荐

