[英]How do I override the default back button action in Cordova?
我已经按照Cordova 文档中的示例代码覆盖了设备后退按钮(使用 ES6),但它没有按预期工作:
const onBackButtonPress = () => {
console.log('pressed');
};
document.addEventListener('backbutton', onBackButtonPress, false);
当我在我的 Android 设备上运行该应用程序时,我的覆盖代码被调用,但该应用程序也会退出,就好像默认的后退按钮操作也被调用一样。
按下后退按钮时,如何防止应用程序退出?
我已经尝试将e.preventDefault()
添加到addEventListener
的回调函数中
我在deviceready
事件触发后执行此操作。
我使用的是 Cordova 7.0.1,我的平台是cordova-android 6.2.3
虽然这里的所有答案都是正确的,但在某些设备上它们仍然不起作用。 我在华为 P smart 2019 上遇到了同样的问题,而在华为 MediaPad T3 上一切正常。 在我的情况下,窗口焦点是问题所在,它在启动过程中的某个时刻丢失了。
所以正如其他人所建议的,在设备准备好后添加: document.addEventListener('backbutton', () => {}, false);
此外,在 Java 插件中启动后的某个时间点(在启动画面之后): this.cordova.getActivity().getWindow().getDecorView().requestFocus();
这也是 Cordova 在 CordovaActivity.onResume 中所做的。 如果您的后退按钮在暂停和恢复应用程序后正常工作,但在此之前不能正常工作,这应该可以解决您的问题。
我在我的应用程序中使用此代码:
document.addEventListener("backbutton", function(e) {
e.preventDefault();
return;
}, false);
请注意,要在设备准备就绪时运行此代码
我使用过如下:
if(cordova.platformId === "android") { document.addEventListener("backbutton", function (event) { event.preventDefault(); var confirmStatus = confirm("Do you want to exit?"); if (confirmStatus === true) { navigator.app.exitApp(); } }, false); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.