2012-06-19 56 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中被删除。