Jquery mobile, удалить предыдущую страницу
Я использую мобильный телефон jquery с phonegap. Мое приложение имеет две страницы: страницу входа и страницу списка. При успешном входе пользователь перейдет на страницу списка. После этого, когда они нажмут кнопку "Назад" на своем телефоне (Android), они вернутся на страницу входа. Я не хочу такого поведения. Я хочу выйти из приложения.
4 ответа
Как я ответил в этом вопросе: страница хэш и кнопка BackBateton выпуска 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" вашей страницей списка...
Имейте в виду, что changeHash:false относится к странице назначения, а не к источнику. Вы не будете удалять исходную страницу из истории. Вместо этого хеш истории не будет обновляться при переходе на новую страницу
Если вы используете последнюю версию jQuery mobile (1.4+), вы можете использовать этот скрипт:
$.mobile.pageContainer.pagecontainer('change', '#page', {reverse: false, changeHash: false});
jQuery.mobile.changePage
устарела с jQuery Mobile 1.4.0 и будет удалена в 1.5.0.
Добавление опций для реверса и изменения Hash у меня не сработало. используя Cordova v1.6
В итоге я переопределил метод onTouch в своей активности Android.
@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);
}