Слушатель событий со спинкой Javascript переопределяет кнопку возврата Android-устройства

Я создал Android app с помощью cordova 2.6.0. Я применил функцию menu в своем приложении, используя html markups и jQuery, которая переключается при взаимодействии с устройством menubutton. Но я не мог понять, как выполнить следующее требование: вести себя как родное приложение.

Требование

menu должен скрываться при нажатии на устройство backbutton, если menu - visible. Если menu не видно, backbutton должен теперь действовать нормально, то есть либо он должен exit app, либо перейти к 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);

Актуальная проблема

Если я подключил eventlistener для backbutton, устройство Back Button отключено, оно не работает как обычно.

Мой вопрос

Перемещается ли document.addEventListener('backbutton', function(){}); на кнопку возврата устройства? Как избавиться от него?

Это происходит на устройстве Android 4.1.2

Ответ 1

После того как вы переопределили кнопку "Назад" с помощью прослушивателя, он не выполняет собственные функции. Вы также должны реализовать поведение выхода.

В своем методе переопределения используйте следующие

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();
  }
});

Надеюсь, что это поможет.

Ответ 2

Чтобы ответить на ваш вопрос:

Является document.addEventListener('backbutton', function() {}); над верхом кнопки назад устройства? Как избавиться от него?

Вы также можете удалить прослушиватель событий на странице redirect, чтобы продолжить использование встроенной функции кнопки "Назад" на последующих страницах. Код для удаления прослушивателя событий следующим образом:

document.removeEventListener("backbutton", onBackButton, false); где onBackButton - это функция, связанная с событием задней кнопки.