android - disable - document addeventlistener('' backbutton
Phonegap-navigator.app.backHistory() no funciona en el botón HTML back (4)
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.
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:
<a class="ui-link" href="#" rel="external" onclick="onBackKeyDown()">
<img src="images/icon-back.png" alt="Phone" border="0">
</a>
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();
.
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.
He intentado 3 cosas por separado cuando me enfrenté a 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();
}
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()"