2012-06-19 16 views
5

Sto usando jquery mobile con PhoneGap. La mia app ha due pagine: pagina di accesso e pagina di elenco. Al login con successo, l'utente andrà alla pagina di elenco. Successivamente, quando premono il pulsante Indietro sul proprio telefono (Android), torneranno alla pagina di accesso. Non voglio un comportamento come questo. Quello che voglio è uscire dall'app.Jquery mobile, rimuovere la pagina precedente

risposta

5

Come ho risposto in questa domanda: page hash and backbutton issue phonegap+Jquery

È possibile modificare le pagine senza il loro mantenimento in cronologia del browser in questo modo:

$.mobile.changePage('#page', {reverse: false, changeHash: false}); 

Purtroppo, non sono riuscito ad impedire che la pagina iniziale da rimanere nella cronologia del browser, così ho usato una soluzione: il layout

Pagina:

<body>  
    <!-- page_1 before page_loading in source --> 
    <div data-role="page" id="page_1"> 
    </div> 
    <!-- page_loading will be shown first --> 
    <div data-role="page" id="page_loading"> 
     <div data-role="content"> 
      <h1 > 
       <b>welcome</b> 
      </h1> 
     </div> 
    </div> 
    <div data-role="page" id="page_2"> 
    </div>  
</body> 

jQuery:

function onBodyLoad() 
{ 
    //go to page_loading before deviceready without keeping it in browser history 
    $.mobile.changePage('#page_loading', {reverse: false, changeHash: false}); 
    document.addEventListener("deviceready", onDeviceReady, false); 
} 

function onDeviceReady() 
{ 
    //your initialization code here... 

    //now go to page_1 without keeping it in browser history since the actual first page was #page_1 already  
    $.mobile.changePage('#page_1', {reverse: false, changeHash: false}); 

    //your code here... 
} 

Questo dovrebbe soddisfare le vostre esigenze, basta provare. "#page_loading" sarebbe la vostra pagina di login, "PAGE_1" la vostra pagina della lista ...

0

Aggiunta di opzioni per inverso e changeHash non ha funzionato per me. utilizzando Cordova v1.6

Ho finito col sovrascrivere il metodo onTouch nella mia attività Android.

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    if (KeyEvent.KEYCODE_BACK == keyCode) { 
     // Clear browsers history if user clicks back button 
     clearHistory(); 
    } 
    return super.onKeyUp(keyCode, event); 
} 
1

Tenete a mente che changeHash: falso si riferisce alla pagina di destinazione , non la fonte. Non rimuoverai la pagina di origine dalla cronologia. Al contrario, l'hash la storia non verrà aggiornato quando si spostano alla nuova pagina

1

Se si utilizza l'ultima versione di jQuery Mobile (1.4+) è possibile utilizzare questo script:

$.mobile.pageContainer.pagecontainer('change', '#page', {reverse: false, changeHash: false}); 

jQuery.mobile.changePage è deprecato a partire dal jQuery Mobile 1.4.0 e sarà rimosso in 1.5.0.

Problemi correlati