2012-06-19 19 views
5

Estoy usando jquery mobile con phonegap. Mi aplicación tiene dos páginas: página de inicio de sesión y página de lista. Cuando inicie sesión con éxito, el usuario irá a la página de la lista. Luego, cuando presionen el botón Atrás en su teléfono (Android), volverán a la página de inicio de sesión. No quiero un comportamiento como este. Lo que quiero es salir de la aplicación.Jquery mobile, eliminar la página anterior

Respuesta

5

Como respondí en esta pregunta: page hash and backbutton issue phonegap+Jquery

Puede cambiar las páginas sin mantenerlos en el historial del navegador, así:

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

Por desgracia, no he podido para evitar que la página inicial de permanecer en el historial del navegador, por lo que utiliza una solución: diseño

Página:

<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... 
} 

Esto debe adaptarse a sus necesidades, simplemente probarlo. "#page_loading" sería su página de inicio de sesión, "PAGE_1" la lista de la página ...

0

Adición de opciones para inversa y changeHash no funcionó para mí. usando Cordova v1.6

Terminé anulando el método onTouch en mi actividad de 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

Tenga en cuenta que changeHash: falsa refiere a la página de destino , no a la fuente. No eliminarás la página fuente del historial. En su lugar, el hash de la historia no se actualiza cuando se mueve a la nueva página

1

Si utiliza la última versión de jQuery Mobile (1.4+), puede utilizar este script:

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

jQuery.mobile.changePage está obsoleta de jQuery Mobile 1.4.0 y se eliminará en 1.5.0.

Cuestiones relacionadas