it-swarm.com.de

Der Javascript Backbutton Event Listener überschreibt die Zurück-Schaltfläche des Android-Geräts

Ich habe Android app mit cordova 2.6.0 erstellt. Ich habe in meiner App eine menuname__-Funktion implementiert, die htmlname__-Markups und jQueryname__-Markups verwendet, die bei der Interaktion mit dem menubuttonnamen__ des Geräts umschalten. Aber ich konnte nicht herausfinden, ob ich die folgende Anforderung erfüllen musste, um mich wie eine native App zu verhalten.

Anforderung

Der menusollte beim Drücken von backbuttondes Geräts ausgeblendet werden, wenn der menuvisibleist. Wenn der menunicht sichtbar ist, sollte der backbuttonjetzt normal funktionieren, dh, entweder sollte er exitden appnamen__ oder zum back history gehen.

Das ist mein 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);

Das eigentliche Problem

Wenn ich einen eventlistenerfür backbuttonangehängt habe, ist der Back Button des Geräts deaktiviert. Er funktioniert nicht wie gewohnt.

Meine Frage ist

Übersteigt document.addEventListener('backbutton', function(){}); das Drücken der Zurück-Taste des Geräts? Wie kann man es loswerden?

Dies geschieht auf Android 4.1.2 Gerät

11
Lekhnath

Sobald Sie die Zurück-Schaltfläche mit dem Listener überschrieben haben, werden die nativen Funktionen nicht mehr ausgeführt. Sie müssen auch das Exit-Verhalten implementieren.

Verwenden Sie in Ihrer überschreibenden Methode Folgendes

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

Hoffentlich hilft das.

10
SHANK

Zur Beantwortung Ihrer Frage:

Ist document.addEventListener ('backbutton', function () {}); Überfahren Sie die Zurück-Taste des Geräts? Wie kann man es loswerden?

Sie können auch den Ereignis-Listener auf der Seitenumleitung entfernen, um die native Funktionalität der Schaltfläche "Zurück" auf den folgenden Seiten weiter zu verwenden. Code zum Entfernen des Ereignis-Listeners wie folgt:

document.removeEventListener("backbutton", onBackButton, false); wobei onBackButton die Funktion ist, die dem Ereignis back button zugeordnet ist.

0
Gandhi