¿Cómo desactivo el botón de retroceso de Android en una página y cambio al botón de salida en cada otra página

Estoy desarrollando una aplicación de Android con Phonegap que interactúa con mi sitio de Drupal. He reasignado el botón "Atrás" de Android para pedir al usuario que cierre la sesión del servidor Drupal. Sin embargo, solo quiero que esté deshabilitado en la página de inicio de sesión (por razones obvias). Puedo conseguir que funcione, pero sólo hasta que el usuario se desconecta una vez en la página de inicio de sesión el botón permanece reasignado como un botón de cierre de sesión. Aquí está el código que tengo hasta ahora:

<head> <script> /* Wait until device is ready to re-assign Back button */ document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { document.addEventListener("backbutton", onBackKeyPress, false); } function onBackKeyPress() { /* If the current page is the login page, disable the button completely (aka do nothing) */ if ($.mobile.activePage.attr('id') == 'login_page') { } /* Else, execute log off code */ else { if (confirm("Are you sure you want to logout?")) { /* Here is where my AJAX code for logging off goes */ } else { return false; } } } </script> </head> 

El problema es que el botón Atrás no se vuelve a asignar. No puedo encontrar una forma de volver a ejecutar el código anterior cuando el usuario se cierre la sesión y termine de nuevo en la página de inicio de sesión.

Si alguien está dispuesto a proporcionar una solución para esto voy a estar muy agradecido!

Deviceready es importante. Si no se utiliza, a veces se puede bloquear el botón Atrás, a veces no. A menudo en la depuración funciona, en la producción no.

 document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { document.addEventListener("backbutton", function (e) { e.preventDefault(); }, false ); } 

EDIT 2013-11-03 Error común es que el desarrollo se realiza en escritorio y cordova script está excluido. A continuación, se olvida de incluir el script cordova para la versión móvil.

Prueba esto:

 document.addEventListener("backbutton", function(e){ if($.mobile.activePage.is('#login_page')){ e.preventDefault(); } else { if (confirm("Are you sure you want to logout?")) { /* Here is where my AJAX code for logging off goes */ } else { return false; } } }, false); 
 document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { document.addEventListener("backbutton", function (e) { e.preventDefault(); }, false ); } 

Usted tiene que reemplazar la acción del botón de nuevo en dispositivo listo … aquí es un ejemplo de trabajo completo "index.html"

 <!DOCTYPE html> <html> <head> <title>Back Button</title> <link rel="stylesheet" type="tex`enter code here`t/css" href="style.css"> <script> function getTitle() { document.getElementById("ct").innerHTML = "DEMO: " + document.title; } </script> <script type="text/javascript" charset="utf-8" src="cordova.js"></script> <script type="text/javascript" charset="utf-8"> // Wait for device API libraries to load // function onLoad() { document.addEventListener("deviceready", onDeviceReady, false); getTitle(); } // device APIs are available // function onDeviceReady() { // Register the event listener document.addEventListener("backbutton", onBackKeyDown, false); } // Handle the back button // function onBackKeyDown() { alert('Backbutton key pressed'); console.log('Backbutton key pressed'); } </script> </head> <body onload="onLoad()"> <ul id="nav"> <li><a href="index.html">&larr; Back</a></li> <li><a href="#" id="ct" onclick="location.reload();"></a></li> </ul> </body> </html> 

Utilicé este código y el botón de la parte posterior es overridden finalmente ….

Ref -> https://github.com/amirudin/PhoneGapPluginDemo/blob/master/www/evt-backbutton.html

  • JSfiddle: cómo crear proyectos multi-JS / CSS / HTML proyecto?
  • ¿Por qué jQuery Mobile 1.1-rc1 utiliza un .gif para el icono de carga (de nuevo)?
  • jquery mobile events en android contra iphone
  • El popup de jQuery.mobile se oculta inmediatamente después de mostrar
  • El enfoque no funciona en android
  • Pinch zoom in, zoom out - javascript / jquery / jquery eventos móviles para la web en la plataforma android?
  • Problema de bajo rendimiento de Phonegap
  • Las imágenes no se muestran en el emulador de Android para la aplicación phonegap / jquerymobile
  • Cómo almacenar datos en la base de datos sqlite con jQuery-mobile dreamviewer cc con phonegap en android?
  • cómo mostrar letras árabes correctamente en android usando phonegap?
  • Impresión desde la web en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.