如何在一个页面上禁用Android后退按钮,并在其他页面上更改为退出按钮

如何在一个页面上禁用Android后退按钮,并在其他页面上更改为退出按钮,android,cordova,jquery-mobile,back-button-control,Android,Cordova,Jquery Mobile,Back Button Control,我正在使用Phonegap开发一个Android应用程序,它与我的Drupal站点交互。我已经重新分配了Android的“后退”按钮来提示用户从Drupal服务器注销,但是,我只想在登录页面上禁用它(出于明显的原因)。我可以让它工作,但只有在用户注销,然后在登录页面上的按钮仍然被重新分配为注销按钮。以下是我目前掌握的代码: <head> <script> /* Wait until device is ready to re-ass

我正在使用Phonegap开发一个Android应用程序,它与我的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>

/*等待设备准备好重新分配后退按钮*/
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
函数ondevicerady(){
文档。添加了EventListener(“backbutton”,onBackKeyPress,false);
}
函数onBackKeyPress(){
/*如果当前页面是登录页面,请完全禁用该按钮(也称为不执行任何操作)*/
if($.mobile.activePage.attr('id')=='login\u page'){
}
/*否则,执行注销代码*/
否则{
如果(确认(“您确定要注销吗?”)){
/*这里是我的用于注销的AJAX代码*/
}
否则{
返回false;
}
}
}
问题是后退按钮没有被重新分配。当用户注销并返回登录页面时,我无法找到重新运行上述代码的方法

如果有人愿意为此提供解决方案,我将非常感激

试试这个:

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);

设备日常生活很重要。若并没有使用,有时你们可以得到阻塞返回按钮,有时并没有。 通常在调试中,它是有效的,在生产环境中是无效的

document.addEventListener("deviceready", onDeviceReady, false);
    function onDeviceReady() {
        document.addEventListener("backbutton", function (e) {
            e.preventDefault();
        }, false );
}
编辑2013-11-03 常见的错误是开发是在桌面上执行的,而cordova脚本被排除在外。
然后,人们会忘记在手机版本中包含cordova脚本。

您必须覆盖设备就绪中的后退按钮操作。。。
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    document.addEventListener("backbutton", function (e) {
        e.preventDefault();
    }, false );
}
下面是一个完整的工作示例“index.html”


后退按钮
函数getTitle(){
document.getElementById(“ct”).innerHTML=“DEMO:”+document.title;
}
//等待加载设备API库
//
函数onLoad(){
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
getTitle();
}
//设备API可用
//
函数ondevicerady(){
//注册事件侦听器
document.addEventListener(“backbutton”,onBackKeyDown,false);
}
//按后退按钮
//
函数onBackKeyDown(){
警报(“按下Backbutton键”);
console.log(“按下Backbutton键”);
}
我使用了这段代码,返回按钮最终被覆盖


Ref-->

适用于我PhoneGap 2.7在我的项目中执行此操作,似乎只运行一次,因此它会输入if语句,阻止默认执行后退按钮并离开,然后后退按钮在应用程序的任何页面中都不起作用
<!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">&larr; Back</a></li>
        <li><a href="#" id="ct" onclick="location.reload();"></a></li>
    </ul>
  </body>
</html>