[英]Angular 7 Cordova 8 backbutton override not working
我正在使用Angular 7和Cordova 8開發應用程序。我想覆蓋cordova后退按鈕事件,以通過按cordova文檔所述添加事件偵聽器來防止應用程序關閉
我的代碼如下所示:
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調試問題后,我可以看到消息WARNING: Back Button Default Behavior will be overridden. The backbutton event will be fired!
WARNING: Back Button Default Behavior will be overridden. The backbutton event will be fired!
在本機Android應用中重寫后退按鈕時,會在CoreAndroid插件類中記錄該日志。 當我按下按鈕時,該應用仍會退出
更新:問題與OnsenUI有關,請參閱下面的答案
我們在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;
});
}
我設法解決了這個問題。 這不是由Cordova或Angular引起的,而是由我用於輸入組件的OnsenUI引起的。 默認情況下,它會覆蓋后退按鈕的所有cordova處理程序,因為它提供了自己的功能。 你可以在這里閱讀更多
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.