我正在使用带有phonegap的jquery mobile。我的应用有两个页面:登录页面和列表页面。登录成功后,用户将进入列表页面。之后,当他们按下手机(android)上的返回按钮时,他们将返回登录页面。我不想要这样的行为。我想要的是退出应用程序。
问问题
6619 次
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
添加reverse和changeHash选项对我不起作用。使用科尔多瓦 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 回答