Как отключить кнопку Android Back на одной странице и перейти на кнопку выхода на каждой другой странице
Я разрабатываю приложение для Android, используя Phonegap, который взаимодействует с моим сайтом Drupal. Я повторно назначил кнопку "Назад" Android, чтобы предложить пользователю выйти из сервера Drupal, но я просто хочу, чтобы он был отключен на странице входа (по понятным причинам). Я могу заставить его работать, но только до тех пор, пока пользователь не выйдет, а затем один раз на странице входа в систему кнопка остается повторно назначенной в качестве кнопки выхода из системы. Вот код, который у меня есть до сих пор:
<head>
<script>
/* Wait until device is ready to re-assign Back button */
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
document.addEventListener("backbutton", onBackKeyPress, false);
}
function onBackKeyPress() {
/* If the current page is the login page, disable the button completely (aka do nothing) */
if ($.mobile.activePage.attr('id') == 'login_page') {
}
/* Else, execute log off code */
else {
if (confirm("Are you sure you want to logout?")) {
/* Here is where my AJAX code for logging off goes */
}
else {
return false;
}
}
}
</script>
</head>
Проблема заключается в том, что кнопка "Назад" не переназначается. Я не могу понять способ повторного запуска вышеуказанного кода, когда пользователь выходит из системы и возвращается на страницу входа.
Если кто-то пожелает предоставить решение для этого, я буду очень благодарен!
Ответы
Ответ 1
deviceready. Если не используется, иногда вы можете заблокировать кнопку "Назад", иногда нет.
Часто в отладке работает, в производстве нет.
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
document.addEventListener("backbutton", function (e) {
e.preventDefault();
}, false );
}
EDIT 2013-11-03
Общей ошибкой является то, что разработка выполняется на рабочем столе, а кордова script исключена.
Затем вы забываете включать в комплект поставки кордову script для мобильной версии.
Ответ 2
Попробуйте следующее:
document.addEventListener("backbutton", function(e){
if($.mobile.activePage.is('#login_page')){
e.preventDefault();
}
else {
if (confirm("Are you sure you want to logout?")) {
/* Here is where my AJAX code for logging off goes */
}
else {
return false;
}
}
}, false);
Ответ 3
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
document.addEventListener("backbutton", function (e) {
e.preventDefault();
}, false );
}
Ответ 4
Вам нужно отменить действие кнопки "Назад" в устройстве...
вот полный рабочий пример "index.html"
<!DOCTYPE html>
<html>
<head>
<title>Back Button</title>
<link rel="stylesheet" type="tex`enter code here`t/css" href="style.css">
<script>
function getTitle() {
document.getElementById("ct").innerHTML = "DEMO: " + document.title;
}
</script>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
getTitle();
}
// device APIs are available
//
function onDeviceReady() {
// Register the event listener
document.addEventListener("backbutton", onBackKeyDown, false);
}
// Handle the back button
//
function onBackKeyDown() {
alert('Backbutton key pressed');
console.log('Backbutton key pressed');
}
</script>
</head>
<body onload="onLoad()">
<ul id="nav">
<li><a href="index.html">← Back</a></li>
<li><a href="#" id="ct" onclick="location.reload();"></a></li>
</ul>
</body>
</html>
Я использовал этот код, и кнопка возврата снова переопределена....
Ref → https://github.com/amirudin/PhoneGapPluginDemo/blob/master/www/evt-backbutton.html