2012-06-19 88 views
5

我正在使用jQuery手機與phonegap。我的應用程序有兩個頁面:登錄頁面和列表頁面。登錄成功後,用戶將進入列表頁面。之後,當他們按下手機上的後退按鈕(android)時,他們將返回到登錄頁面。我不希望這樣的行爲。我想要的是退出應用程序。jquery mobile,刪除前一頁

回答

5

正如我在這個問題回答說:page hash and backbutton issue phonegap+Jquery

您可以更改頁,而讓他們在瀏覽器歷史記錄,像這樣:

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

不幸的是,我沒能防止初始頁面滯留在瀏覽器歷史記錄,所以我用一種變通方法:

頁面佈局:

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

這應該滿足您的需求,只是嘗試一下。 「#page_loading」將是你的登錄頁面,「PAGE_1」列表頁...

0

添加選項反向changeHash沒有爲我工作。使用科爾多瓦v1.6

我最終覆蓋了我的Android活動中的onTouch方法。

@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

記住changeHash:假指的目的地頁面,而不是源。您不會從歷史記錄中刪除源頁面。

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

jQuery.mobile.changePage是不贊成的:相反,歷史哈希將不會被移動到新的頁面

1

時,如果您使用最新版本的jQuery移動(1.4+),你可以使用這個腳本更新jQuery Mobile 1.4.0將在1.5.0中被刪除。