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