Jquery mobile,删除上一页

时间:2012-06-19 11:23:02

标签: android cordova jquery-mobile

我正在使用带有phonegap的jquery mobile。我的应用程序有两个页面:登录页面和列表页面。登录成功后,用户将转到列表页面。之后,当他们按下手机上的后退按钮(android)时,他们将返回登录页面。我不希望这样的行为。我想要的是退出应用程序。

4 个答案:

答案 0 :(得分: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”是您的列表页面...

答案 1 :(得分:1)

请注意,changeHash:false指的是目标网页,而不是指源。您不会从历史记录中删除源页面。相反,移动到新页面时不会更新历史哈希

答案 2 :(得分:1)

如果您使用最新版本的jQuery mobile(1.4+),则可以使用此脚本:

$.mobile.pageContainer.pagecontainer('change', '#page', {reverse: false, changeHash: false});
自jQuery Mobile 1.4.0起,

jQuery.mobile.changePage已弃用,将在1.5.0中删除。

答案 3 :(得分:0)

反向 changeHash 添加选项对我不起作用。使用Cordova v1.6

我最终在我的Android Activity中覆盖了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);
}