5

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

4

4 回答 4

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”是您的列表页面...

于 2012-06-19T13:44:29.077 回答
1

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

于 2015-06-19T05:54:36.983 回答
1

如果你使用最新版本的 jQuery mobile (1.4+) 你可以使用这个脚本:

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

jQuery.mobile.changePage自 jQuery Mobile 1.4.0 起已弃用,并将在 1.5.0 中删除。

于 2015-10-25T10:53:32.677 回答
0

添加reversechangeHash选项对我不起作用。使用科尔多瓦 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);
}
于 2012-08-16T18:22:46.500 回答