簡體   English   中英

Angular 7 Cordova 8后退按鈕覆蓋不起作用

[英]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);

根據文檔,這應防止應用程序關閉。 我知道preventDefaultstopPropagationreturn 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM