我正在使用Angular 7和Cordova 8开发应用程序。我想覆盖cordova后退按钮事件,以通过添加事件监听器来防止应用程序关闭,如cordova docs
中所述。我的代码如下:
let onDeviceReady = () => {
enter code hereconsole.log("Bootstraping Module...")
document.addEventListener("backbutton", (e) => {e.preventDefault(); e.stopPropagation(); console.log("backbutton"); return false;}, false);
platformBrowserDynamic().bootstrapModule(AppModule);
};
document.addEventListener('deviceready', onDeviceReady, false);
根据文档,这应防止应用程序关闭。我知道preventDefault
,stopPropagation
和return false
调用不是必需的,但是我发现了解决我问题的可能解决方案,但都没有用。
当我按下“后退”按钮时,我看到backbutton
打印,但是该应用程序仍在关闭。
在Android上进行了测试。
更新:使用logcat调试问题后,当本机Android应用中的后退按钮被覆盖时,我会看到消息WARNING: Back Button Default Behavior will be overridden. The backbutton event will be fired!
记录在CoreAndroid插件类中。仍然当我按下按钮时,应用程序退出
更新:问题与OnsenUI有关,请在下面查看我的答案
答案 0 :(得分:0)
我们在app.component.ts ngOnInit中传递了后退按钮逻辑
import {Renderer2} from '@angular/core';
constructor(private renderer: Renderer2){}
ngOnInit(){
const devicebackbutton = this.renderer.listen('document', 'backbutton', e => {
e.preventDefault();
e.stopPropagation();
return false;
});
}
答案 1 :(得分:0)
我设法解决了这个问题。这不是由Cordova或Angular引起的,而是由我用于输入组件的OnsenUI引起的。 默认情况下,它会覆盖后退按钮的所有cordova处理程序,因为它提供了自己的功能。您可以阅读更多here