Прослушиватель событий JavaScript backbutton переопределяет кнопку "Назад" android-устройства

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

требование

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

2 ответов


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

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

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

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


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

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

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

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