web-dev-qa-db-fra.com

Le programme d'écoute d'événement Javascript du bouton arrière annule le bouton de retour de l'appareil Android

J'ai créé Android app en utilisant cordova 2.6.0. J'ai implémenté une fonctionnalité menu dans mon application à l'aide des balises html et jQuery, qui bascule lors de l'interaction avec la variable menubutton de l'appareil. Mais je ne pouvais pas comprendre comment satisfaire à l'exigence suivante: se comporter comme une application native.

Besoin

La menu doit se cacher lorsque vous appuyez sur la backbutton du périphérique si la menu est visible. Si le menu n'est pas visible, le backbutton doit maintenant agir normalement, c'est-à-dire qu'il devrait soit exit le app, soit aller au back history.

Ceci est mon code

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

Le problème actuel

Si je joins une eventlistener pour backbutton, le Back Button du périphérique est désactivé, cela ne fonctionne pas normalement.

Ma question est

Est-ce que document.addEventListener('backbutton', function(){}); survole le bouton de retour de l'appareil? Comment s'en débarrasser?

Cela se passe sur le périphérique Android 4.1.2

11
Lekhnath

Une fois que vous avez remplacé le bouton Précédent à l'aide du programme d'écoute, les fonctionnalités natives ne sont pas exécutées. Vous devez également implémenter le comportement de sortie.

Dans votre méthode de substitution, utilisez les méthodes suivantes

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

J'espère que cela pourra aider. 

10
SHANK

Pour répondre à ta question:

Est document.addEventListener ('backbutton', function () {}); sur le bouton de retour de l'appareil? Comment s'en débarrasser?

Vous pouvez également supprimer l'écouteur d'événements sur la redirection de page pour continuer à utiliser la fonctionnalité native du bouton Précédent dans les pages suivantes. Code pour supprimer l'écouteur d'événements comme suit:

document.removeEventListener("backbutton", onBackButton, false); où onBackButton est la fonction associée à l'événement du bouton Précédent.

0
Gandhi