Страница хэш и кнопка Backbutton выпускают телефонный разрыв +Jquery
Я новичок в программировании PhoneGap и надеюсь, что кто-то может помочь мне здесь:
используются cordova 1.7.0, Jquery 1.7.2 и JQM 1.1.0. Приложение тестируется на Android.
Я пытаюсь сделать стартовую страницу для приложения.
<body>
<div data-role="page" id="page_loading">
<div data-role="content">
<h1 >
<b>welcome</b>
</h1>
</div>
</div>
<div data-role="page" id="page_1">
</div>
<div data-role="page" id="page_2">
</div>
</body>
Я положил $.mobile.changePage($('page_1'), { changeHash: false});
в конце onDeviceReady()
функция. Когда приложение запускается, оно сразу показывает страницу загрузки, после окончания загрузки оно переходит на первую страницу.
На первой странице, когда я нажимаю кнопку на странице_1, она выходит из приложения. Это то, что я хочу.
Затем я снова использовал mobile.changePage, чтобы перейти на страницу 2. Если я все еще использую changeHash: false
, кнопка снова выйдет из приложения. Если я использую changeHash: true
, кнопка не возвращается на страницу_1, но она переходит на страницу загрузки.
Если я использую changeHash: true
при переходе от загрузки к странице 1 кнопка на странице 2 откроет первую страницу, но на первой странице она откроет страницу загрузки, а не выйдет из приложения.
У меня такой вопрос: как я могу заставить кнопку вернуться в историю на странице 2, странице 3 и т. Д., Но выйти из приложения на странице 1?
Я думаю, мне нужно как-то перестроить / очистить хеш. Может кто-нибудь показать мне, как? Спасибо
3 ответа
У меня была та же проблема, и я использовал обходной путь:
Макет страницы:
<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...
}
Это должно соответствовать вашим потребностям, просто попробуйте...
Я знаю, что это действительно старый вопрос, но я столкнулся с этой проблемой и подумал, что я добавлю свое решение:
Я просто добавил слушатель "onPageBeforeShow" на свою страницу-заставку и использовал глобальный логический "splashDisplayed", чтобы определить, был ли это первый раз, когда показывается заставка. Если да, установите логическое значение true, если нет, закройте приложение.
$(document).on("pagebeforeshow", "#splash", function () {
if(!splashDisplayed){
splashDisplayed=true;
}else{
navigator.app.exitApp();
}
});
У меня возникли проблемы при обновлении с jquery-1.7.1 до jquery-1.7.2, поэтому я быстро переключился обратно. Сайт JQM говорит, что в настоящее время он поддерживает jQuery 1.6.4 и 1.7.1. Не могли бы вы попробовать перейти на версию 1.7.1 и посмотреть, работает ли она?
(С использованием Cordova 1.8.0 и JQM-bleeding edge)