web-dev-qa-db-ja.com

Javascriptの戻るボタンイベントリスナーはAndroidデバイスの戻るボタンをオーバーライドします

Android appを使用してcordova 2.6.0を作成しました。 menuマークアップとデバイスのhtmlとの対話を切り替えるjQueryを使用して、アプリにmenubutton機能を実装しました。しかし、ネイティブアプリのように動作するために、次の要件を達成することはできませんでした。

要件

menubackbuttonの場合、menuはデバイスのvisibleを押すと非表示になります。 menuが表示されない場合、backbuttonは正常に動作するはずです。つまり、exitappであるか、back historyに移動する必要があります。

これは私のコードです

document.addEventListener('deviceready', function(){

document.addEventListener('menubutton', function(){
//Toggle Menu
//Which is working fine
});

document.addEventListener('backbutton', function(){
if(menu is visible) {
  //Hide the menu
  //This is also working fine
return false;
} 

//BUT the default action of backbutton has gone. It cannot exit the app , neither it brings to back history.

//return true;
//I have also tried to return boolean true , but facing the same problem.
});

}, false);

実際の問​​題

eventlistenerbackbuttonを添付した場合、デバイスのBack Buttonは無効になり、通常どおり機能しません。

私の質問は

document.addEventListener('backbutton', function(){});はデバイスの戻るボタンに乗っていますか?それを取り除く方法は?

これはAndroid 4.1.2デバイスで発生しています

12
Lekhnath

リスナーを使用して戻るボタンをオーバーライドすると、ネイティブ機能は実行されません。終了動作も実装する必要があります。

オーバーライドする方法では、次を使用します

document.addEventListener('backbutton', function(){
  if(menu is visible) {
       //Hide the menu
       //This is also working fine
   return false;
  }
  else //nothing is visible, exit the app
  {
    navigator.app.exitApp();
  }
});

お役に立てば幸いです。

10
SHANK

あなたの質問に答えるには:

Document.addEventListener( 'backbutton'、function(){});です。デバイスの戻るボタンに乗り越えますか?それを取り除く方法は?

ページリダイレクトでイベントリスナーを削除して、後続のページで戻るボタンのネイティブ機能を引き続き使用することもできます。次のようにイベントリスナーを削除するコード:

document.removeEventListener("backbutton", onBackButton, false);ここで、onBackButtonは、戻るボタンイベントに関連付けられた関数です。

1
Gandhi