Básicamente tiene dos "ollas" de historia que debe manipular. Navegador y JQM.
JQM urlHistory
Usted puede modificar JQMs urlHistory muy fácilmente. A partir del código JQM:
urlHistory = {
// Array of pages that are visited during a single page load.
// Each has a url and optional transition, title, and pageUrl
// (which represents the file path, in cases where URL is obscured, such as dialogs)
stack: [],
// maintain an index number for the active page in the stack
activeIndex: 0,
// get active
getActive: function() {
return urlHistory.stack[urlHistory.activeIndex];
},
getPrev: function() {
return urlHistory.stack[urlHistory.activeIndex - 1];
},
getNext: function() {
return urlHistory.stack[urlHistory.activeIndex + 1];
},
// addNew is used whenever a new page is added
addNew: function (url, transition, title, pageUrl, role) {
// if there's forward history, wipe it
if (urlHistory.getNext()) {
urlHistory.clearForward();
}
urlHistory.stack.push({
url: url,
transition: transition,
title: title,
pageUrl: pageUrl,
role: role
});
urlHistory.activeIndex = urlHistory.stack.length - 1;
},
//wipe urls ahead of active index
clearForward: function() {
urlHistory.stack = urlHistory.stack.slice(0, urlHistory.activeIndex + 1);
}
};
Así que todas las funciones anteriores están disponibles y pueden ser llamados así por ejemplo:
$.mobile.urlHistory.clearForward();
para supervisar su historia, poner esto en alguna parte y espere el pageChange (una vez las transiciones se hacen) para ver lo que está dentro de la urlHistory:
$(document).on('pagechange', 'div:jqmData(role="page")', function(){
console.log($.mobile.urlHistory.stack);
});
Desde allí se puede empezar a ver lo que debería ser en la historia y limpiarlo como sea necesario.
Estoy usando esto mucho para mi propia capa de navegación para modificar lo que está almacenado en el urlHistory y lo que no se debe almacenar. Sincronización-ción con el navegador es la parte difícil ...
En sincronización-ción con el navegador:
En mi capa de navegación sólo estoy eliminación de entradas dobles de la urlHistory, así que siempre hay una página para ir a (y no dos), cuando haces clic en el botón Atrás del navegador. En su caso, presumiblemente tendrá 4 entradas en el historial del navegador, pero si elimina 2 entradas de JQM urlHistory, tendrá dos páginas "no llegó a" cuando se hace clic en el botón Atrás.Así que si su historial de navegación se ve así:
www.google.com
www.somePage.com
www.YOUR_APP.com = page1
page2
page3
page4
Y su page2 quitar y page3, al hacer clic respaldo botón debe dar lugar a:
1st back-click = page4 > page1
2nd back-click = page1 > www.somePage.com [because you removed page3]
3rd back-click = www.somePage.com > www.google.com [because you removed page2]
Una solución teórica sería:
- mantener un contador de cómo "profundo" se entra en una página
- eliminar páginas de JQM urlHistory y obtener un valor "jump" = counter-removedPáginas
- en el siguiente navegador hacer clic atrás, hacer saltar x window.history (volver) y solo dejar pasar una transición JQM. Usted URL descansar Page4> page3> page2> page1 en un solo paso y sólo se permite JQM hacer un solo paso de la página 4 de la Página 1
- verificación del contenido de la urlHistory y limpiar después de su "triple vuelta"
Tenga cuidado con esto es no es una solución óptima y tiene que considerar muchas cosas (el usuario hace clic en otro lugar antes de volver, etc.). Intenté siempre conseguir que algo como esto funcionara en una configuración más complicada y, finalmente, dejé de usarlo, porque nunca funcionó como debería. Pero para una configuración más simple, puede funcionar.
¡Que seas bendecido por los dioses antiguos y nuevos! –
En JSF, por ejemplo, he utilizado este enfoque para anular el clic del botón 'data-rel =" back "' de jQuery Mobile: 'window.history.go (- # {managedBean.count});', que haría convierte en 'window.history.go (-3);' si estás en la página 4, por ejemplo. – falsarella
No encuentro $ .mobile.urlHistory en los documentos jqm ... http://api.jquerymobile.com/?s=urlHistory – dsdsdsdsd