Fondamentalmente hai due "pentole" di cronologia che devi manomettere. Browser e JQM.
jQm urlHistory
È possibile modificare JQMs urlHistory molto facilmente. Dal codice 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);
}
};
Quindi, tutte le funzioni di cui sopra sono a disposizione e può essere chiamato in questo modo per esempio:
$.mobile.urlHistory.clearForward();
per monitorare la vostra storia, mettere questo da qualche parte e ascoltare per pageChange (una volta transizioni sono fatte) per vedere ciò che si trova all'interno del urlHistory:
$(document).on('pagechange', 'div:jqmData(role="page")', function(){
console.log($.mobile.urlHistory.stack);
});
da lì si può iniziare a vedere quello che dovrebbe essere nella storia e ripulirlo come avete bisogno.
Sto usando questo molto per il mio livello di navigazione per modificare ciò che è memorizzato in urlStoria e cosa non dovrebbe essere memorizzato. Sync-zione con il browser è la parte difficile ...
On sync-zione con il browser:
Nel mio strato di navigazione Sono solo rimuovendo doppie voci dal urlHistory, quindi c'è sempre una pagina per andare a (e non due), quando si fa clic sul pulsante Indietro del browser. Nel tuo caso, avrai presumibilmente 4 voci nella cronologia del browser, ma se rimuovi 2 voci da JQM urlHistory, avrai due pagine "non per arrivare a" quando si fa clic sul pulsante Indietro.Quindi, se la vostra storia del browser simile a questa:
www.google.com
www.somePage.com
www.YOUR_APP.com = page1
page2
page3
page4
E la tua rimuovere page2 e page3, cliccando back-pulsante dovrebbe comportare:
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 soluzione teorica sarebbe:
- mantenere un contatore come "profondo" si entra in una pagina
- rimuovere le pagine da JQM urlHistory e ottenere un valore "jump" = counter-removedPages
- sul prossimo browser fare clic su, fare il salto x window.history (indietro) e lasciare passare solo una transizione JQM. È URL rilassarsi page4> page3> page2> pagina1 in un unico passaggio e si consente solo jQm per fare un solo passaggio da page4 a PAGE1
- controllo cosa c'è nella urlHistory e ripulire il vostro "back tripla"
Attenzione questo è non una soluzione ottimale e devi considerare un sacco di cose (l'utente fa clic da qualche altra parte prima di tornare indietro ecc.). Ho cercato per sempre di ottenere qualcosa di simile per funzionare in un setup più complicato e alla fine ho smesso di usarlo, perché non ha mai funzionato come dovrebbe. Ma per una configurazione più semplice potrebbe funzionare molto bene.
Possa tu essere benedetto dai vecchi e dai nuovi dei! –
In JSF, ad esempio, ho utilizzato questo approccio per sovrascrivere il clic del pulsante 'data-rel =" back "' di jQuery Mobile: 'window.history.go (- # {managedBean.count});', che sarebbe trasformarsi in 'window.history.go (-3);' se si è nella pagina 4, ad esempio. – falsarella
Non trovo $ .mobile.urlHistory nei documenti jqm ... http://api.jquerymobile.com/?s=urlHistory – dsdsdsdsd