2012-06-19 14 views
5

Ich benutze jquery mobile mit phonegap. Meine App hat zwei Seiten: Login-Seite und Listen-Seite. Wenn Sie sich erfolgreich angemeldet haben, geht der Benutzer zur Listenseite. Wenn sie dann die Zurück-Taste ihres Telefons (Android) drücken, kehren sie zur Anmeldeseite zurück. Ich will kein solches Verhalten. Ich möchte die App beenden.Jquery mobile, vorherige Seite entfernen

Antwort

5

Wie ich in dieser Frage beantwortet: page hash and backbutton issue phonegap+Jquery

Sie können Seiten ändern, ohne dass sie in Browser-History zu halten wie so:

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

Leider habe ich nicht verwalten die erste Seite zu verhindern, dass zu bleiben in Browser-History, so habe ich eine Abhilfe:

Seitenlayout:

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

Dies sollte Ihren Bedürfnissen passen, versuchen Sie es einfach aus. „#page_loading“ Ihre Login-Seite wäre, „PAGE_1“ Liste Seite ...

0

Hinzufügen von Optionen für Reverse und changeHash nicht für mich arbeiten. mit Cordova v1.6

Ich endete über die OnTouch-Methode in meiner Android Activity.

@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

Beachten Sie, dass changeHash: false zum Zielseite, nicht auf die Quelle verweist. Sie werden die Quellseite nicht aus dem Verlauf entfernen. Stattdessen wird nicht die Geschichte Hash aktualisiert werden, wenn auf die neue Seite zu bewegen

1

Wenn Sie die neueste Version von jQuery Mobile (1.4+) verwenden, können Sie dieses Skript verwenden:

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

jQuery.mobile.changePage ist veraltet ab jQuery Mobile 1.4.0 und wird in 1.5.0 entfernt.