Phonegap – navigator.app.backHistory () no funciona en el botón HTML back

En mi aplicación estoy usando phonegap 2.6. Para el botón de retroceso, estoy usando la siguiente función

document.addEventListener("backbutton", onBackKeyDown, false); function onBackKeyDown() { alert("hello"); navigator.app.backHistory(); } document.addEventListener('deviceready', onDeviceReady, true); 

La función anterior funciona bien cuando hago clic en el botón de retroceso de hardware del dispositivo . Pero cuando hago clic en el botón Atrás, no funciona.

He diseñado mi botón Atrás de la siguiente manera:

  Phone  

Pero este botón funciona bien para este navigator.app.exitApp(); (salida de la aplicación).

 //Working Fine function onBackKeyDown() { navigator.app.exitApp(); } //Not Working function onBackKeyDown() { navigator.app.backHistory(); } 

pero no funciona para navigator.app.backHistory(); .

He intentado 3 cosas separadas cuando enfrenté la misma situación:

  • window.history.back()

  • navigator.app.backHistory();

  • History.go(-1);

Individualmente, ninguno de estos resuelve el problema. Puse las 3 cosas juntas y para mi sorpresa funcionó. Realmente no sé qué hay detrás.

Luego disminuí a dos funciones y eliminé:

  • window.history.back()

Ahora estoy usando esta función y está funcionando bien.

 //Works Fine function onBackKeyDown() { history.go(-1); navigator.app.backHistory(); } 

Si usa el atributo data-rel = “back” en un anclaje, cualquier clic en ese anclaje imitará el botón Atrás, retrocediendo una entrada en el historial e ignorando el href predeterminado del anclaje.

depende de dónde se encuentre: en mi teléfono con Windows 8.1 lumia 925, funciona history.go (-1); , mientras que navigator.app.backHistory (); causa una excepción antes de colisionar.

En mi Android (creo que la mayoría), navigator.app.backHistory (); trabaja apropiadamente.

Resuelto Deja de obtener “TypeError: navigator.app no ​​está definido”

Una función que creé que primero verifica en qué dispositivo estás y luego aplica el guión relevante:

 function onBackKeyDown() { var userAgent = navigator.userAgent || navigator.vendor || window.opera; if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) { // IOS DEVICE history.go(-1); } else if (userAgent.match(/Android/i)) { // ANDROID DEVICE navigator.app.backHistory(); } else { // EVERY OTHER DEVICE history.go(-1); } } 

Llame a la función agregando esto a su enlace / botón:

 onclick="onBackKeyDown()"