繁体   English   中英

如何覆盖 Cordova 中的默认后退按钮操作?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM