Phonegap Android Back Button - закрыть приложение с кнопкой "Назад" на главной странице
Я разрабатываю приложение для Android, используя JQuery Mobile/Phonegap. У меня есть следующий код для управления кнопкой возврата телефона:
document.addEventListener("backbutton", backKeyDown, true);
function backKeyDown() {
// Call my back key code here.
$.mobile.changePage("#homepage", "slideup");
}
Все работает отлично, но я хотел бы, чтобы приложение закрывалось при нажатии кнопки "Назад" только на домашней странице, возможно ли это?
Ответы
Ответ 1
Обновление: это перестало работать с последним обновлением Phonegap (предположительно). Не стесняйтесь предлагать рабочее решение, если вы его знаете.
Вот как я это делаю:
document.addEventListener("backbutton", function(e){
if($.mobile.activePage.is('#homepage')){
/*
Event preventDefault/stopPropagation not required as adding backbutton
listener itself override the default behaviour. Refer below PhoneGap link.
*/
//e.preventDefault();
navigator.app.exitApp();
}
else {
navigator.app.backHistory()
}
}, false);
Для получения дополнительной информации здесь вы можете найти соответствующую документацию с полным примером: http://docs.phonegap.com/en/2.0.0/cordova_events_events.md.html#backbutton
Ответ 2
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
document.addEventListener("backbutton", onBackKeyDown, false);
}
function onBackKeyDown()
{
navigator.app.exitApp();
}
Спасибо, спайдер.
Ответ 3
Вам нужно будет отслеживать, когда отображается домашняя страница. Когда вы знаете, что вы находитесь на домашней странице:
navigator.app.exitApp();
Ответ 4
Если вы не хотите использовать jQuery Mobile, измените $.mobile.activePage.is('#homepage')
на document.getElementById('#homepage')
на ответ @Spadar Shut, как на следующий код:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady(){
document.addEventListener("backbutton", function(e){
if(document.getElementById('#homepage')){
e.preventDefault();
navigator.app.exitApp();
}
else {
navigator.app.backHistory()
}
}, false);
}
Таким образом, не нужно загружать Jquery Mobile gibberish только для этой цели. Кроме того, activePage устарел от JQuery mobile 1.4.0 и будет удален с 1.5.0. (Используйте метод getActivePage() из виджета pagecontainer вместо)