Javascript 在cordova应用程序中禁用“后退”按钮后,该按钮仍在工作

Javascript 在cordova应用程序中禁用“后退”按钮后,该按钮仍在工作,javascript,cordova,Javascript,Cordova,我已经实现了禁用android设备后退按钮的代码,但它不起作用。当我运行应用程序并点击后退按钮时,它就会退出。我已经在index.html文件中包含了cordova.js。我做错了什么? 这是我的密码: JS document.addEventListener('deviceready', function () { document.addEventListener("backbutton", onBackKeyDown, false); function

我已经实现了禁用android设备后退按钮的代码,但它不起作用。当我运行应用程序并点击后退按钮时,它就会退出。我已经在index.html文件中包含了cordova.js。我做错了什么? 这是我的密码:

JS

document.addEventListener('deviceready', function () {  
      document.addEventListener("backbutton", onBackKeyDown, false);
          function onBackKeyDown(e) {
               e.preventDefault();
           } 

}, false);
index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
    <!--<link href="assets/ratchet/css/ratchet.css" rel="stylesheet">
    <link href="assets/css/styles.css" rel="stylesheet"> -->
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="0" />
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="mobile-web-app-capable" content="yes">

 <link href="css/style.css" rel="stylesheet">

    <!-- <link href="assets/jqueryui/jquery-ui.css" rel="stylesheet"> -->
</head>
<body>
<div class="maincontainer">

<script id="langue-tpl" type="text/template">
    <div id="mydialog" title="Beezlink"></div>
    <div class="sk-circle" id="proc"><div class="sk-circle1 sk-child"></div><div class="sk-circle2 sk-child"></div><div class="sk-circle3 sk-child"></div><div class="sk-circle4 sk-child"></div><div class="sk-circle5 sk-child"></div><div class="sk-circle6 sk-child"></div><div class="sk-circle7 sk-child"></div><div class="sk-circle8 sk-child"></div><div class="sk-circle9 sk-child"></div><div class="sk-circle10 sk-child"></div><div class="sk-circle11 sk-child"></div><div class="sk-circle12 sk-child"></div></div>
    <div class="contentwrap home">
   <div id="bodydiv">
    <!--
    <img src="assets/logo-symbol.png" class="home-logo" />
   <div>    
      <div class="form-group">
        <select id="langtr" class="form-control">        
              <option value="val_fr">Francais</option>
              <option value="val_english">English</option>
              <option value="val_spanish">Spanish</option>
              <option value="val_german">German</option>
          </select>
          <br/><button id="gobtn">OK</button>
      </div>
   </div>
   -->
  </div> 
</div>  
</script>
</div>
<script type="text/javascript" src="cordova.js"></script>

<script src="lib/handlebars"></script>


<script type='application/javascript' src='lib/fastclick'></script>



<script src="lib/jquery"></script>

<script src="lib/jquery-ui"></script>

<script src="lib/jquery.alphanum"></script>

<script src="js/LangueView"></script>
<script src="js/app"></script>
<script src="js/disablerclick"></script>
</body>
</html>

app.js

// We use an "Immediate Function" to initialize the application to avoid leaving anything behind in the global scope
(function () {
    Handlebars.registerHelper('compare', function (lvalue, operator, rvalue, options) {

    var operators, result;

    if (arguments.length < 3) {
        //throw new Error("Handlerbars Helper 'compare' a besoin de 2 parametres");
    }

    if (options === undefined) {
        options = rvalue;
        rvalue = operator;
        operator = "===";
    }

    operators = {
        '==': function (l, r) { return l == r; },
        '===': function (l, r) { return l === r; },
        '!=': function (l, r) { return l != r; },
        '!==': function (l, r) { return l !== r; },
        '<': function (l, r) { return l < r; },
        '>': function (l, r) { return l > r; },
        '<=': function (l, r) { return l <= r; },
        '>=': function (l, r) { return l >= r; },
        'typeof': function (l, r) { return typeof l == r; }
    };

    if (!operators[operator]) {
        //throw new Error("Handlerbars Helper 'compare' ne connait pas l'operateur " + operator);
    }

    result = operators[operator](lvalue, rvalue);

    if (result) {
        return options.fn(this);
    } else {
        return options.inverse(this);
    }

});

 LangueView.prototype.template = Handlebars.compile($("#langue-tpl").html());
  $('body').html(new LangueView().render().$el);

            /* ---------------------------------- Local Variables ---------------------------------- */

      //  var pictureSource; // picture source
      //var destinationType; // sets the format of returned value
      // Wait for device API libraries to load
      //
  /*var service = new EmployeeService();
     service.initialize().done(function () {
     $('body').html(new HomeView(service).render().$el);
    });*/

    /* --------------------------------- Event Registration -------------------------------- */
    //$('.search-key').on('keyup', findByName);
    /*$('.help-btn').on('click', function() {
        alertjqry("Employee Directory v3.4");
    });*/

 /*
  window.addEventListener('orientationchange', function () {   //window.orientation=='-90' || window.orientation=='90'
    if(window.innerHeight < window.innerWidth){
    if(window.orientation=='-90' || window.orientation=='90')
       alertjqry("Attention: Si vous avez un iphone 6, veuillez retourner en mode portrait sinon certaines fonctions de l'application pourront mal fonctionner avec cette orientation de votre appareil!");
    }else{
          $("#mydialog").dialog('close');
    } 
   }, false);
 */ 


    document.addEventListener('deviceready', function () {
    FastClick.attach(document.body);
    //console.log(navigator.contacts);
    // console.log(navigator.camera);
  //console.log(FileTransfer);
  //window.open= cordova.InAppBrowser.open;

  //pictureSource = navigator.camera.PictureSourceType;
  //destinationType = navigator.camera.DestinationType;
/*
    if (navigator.notification) { // Override default HTML alert with native dialog
      window.alert = function (message) {
          navigator.notification.alert(
              message,    // message
              null,       // callback
              "Beezlink", // title
              'OK'        // buttonName
          );
      };
    }

*/ 
   document.addEventListener("backbutton", onBackKeyDown, false);

   }, false);

  function onBackKeyDown(e) {
     e.preventDefault();
   }    

   //console.log(FileTransfer);




    /* ---------------------------------- Local Functions ---------------------------------- */


}());
//我们使用“立即函数”初始化应用程序,以避免在全局范围内留下任何内容
(功能(){
把手。寄存器帮助器('compare',函数(左值、运算符、右值、选项){
var算子,结果;
如果(参数长度<3){
//抛出新错误(“Handlerbars助手”比较“2个参数中的一个参数”);
}
如果(选项===未定义){
选项=右值;
右值=运算符;
运算符=“=”;
}
运算符={
“==”:函数(l,r){返回l==r;},
“==”:函数(l,r){返回l==r;},
“!=”:函数(l,r){返回l!=r;},
“!=”:函数(l,r){返回l!==r;},
'':函数(l,r){返回l>r;},
'=':函数(l,r){返回l>=r;},
'typeof':函数(l,r){返回typeof l==r;}
};
如果(!运算符[运算符]){
//抛出新错误(“Handlerbars Helper'compare'ne connait pas l'operator”+operator);
}
结果=运算符[运算符](左值,右值);
如果(结果){
返回选项。fn(本);
}否则{
返回选项。反向(此);
}
});
LanguageView.prototype.template=handlebar.compile($(“#Language tpl”).html();
$('body').html(新语言视图().render().el);
/*-------------------------------------局部变量-------------------------------------------*/
//var pictureSource;//图片源
//var destinationType;//设置返回值的格式
//等待加载设备API库
//
/*var service=new EmployeeService();
service.initialize().done(函数(){
$('body').html(新的HomeView(service).render().$el);
});*/
/*-------------------------------------活动注册------------------*/
//$('.search key')。on('keyup',findByName);
/*$('.help btn')。在('click',function()上{
alertjqry(“员工目录v3.4”);
});*/
/*
window.addEventListener('orientationchange',function(){//window.orientation='-90'| | | window.orientation=='90'
if(window.innerHeight
尝试添加e.stopPropagation()e.stoppimmediatepropagation() 而不是e.preventDefault()

常见的错误是,开发是在桌面和cordova上进行的 脚本被排除在外。然后,人们会忘记将cordova脚本包含在 移动版


您可能需要防止其他窗口事件,如popstate。 试试这个:

window.addEventListener("popstate", function(e) {
   //try e.preventDefault() or e.stopImmediatePropagation()
   e.stopImmediatePropagation()
   e.preventDefault();
}, false);

我跳过了onDeviceReady,所以我只有:
document.addEventListener(“backbutton”,onBackKeyDown,false);
函数onBackKeyDown(e){
e、 预防默认值();

}
你注册了事件监听器吗?你是说deviceready吗?是的,我就是这个意思。我所有的代码都在我发布的代码中。看看这个网站:我已经尝试过了,但应用程序仍然会在点击后退按钮时退出。是的,Akshay。同样的问题依然存在。它退出应用程序。@PaulNgom页面中是否包含CORDOVA.JS?尝试将javascript序列包含为1。cordova.js 2.Jquery.js 3.Index.js如果问题仍然存在,请发布html和js代码
window.addEventListener("popstate", function(e) {
   //try e.preventDefault() or e.stopImmediatePropagation()
   e.stopImmediatePropagation()
   e.preventDefault();
}, false);