首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cordova/PhoneGap不工作的AngularJS中的移动后退按钮

Cordova/PhoneGap不工作的AngularJS中的移动后退按钮
EN

Stack Overflow用户
提问于 2015-02-10 20:40:11
回答 2查看 3.3K关注 0票数 0

我正在用AngularJS /PhoneGap开发我的第一个Android移动应用程序。我已经在我的脚本文件中添加了以下代码,但我无法捕获have按钮事件。以下是我的scripts.js中的内容:

代码语言:javascript
复制
  var app = angular.module('QFA', []);

  app.controller('QFAinit', function( $scope, $window ) {

          document.addEventListener("deviceready", onDeviceReady(), false);

          function onDeviceReady() {

            $window.alert("Device Ready-1");
            document.addEventListener("backbutton", onBackKeyDown, false);
            $window.alert("Device Ready-2");

            function onBackKeyDown() {
              $window.alert("Inside onBackKeyDown1");
            }
         }
  });

我这样叫它:

代码语言:javascript
复制
  <body ng-controller="QFAinit">

当我运行应用程序时,我得到了"Device Ready-1\f6“和"Device Ready-2\f6”警告。这意味着deviceready事件正在被正确触发,并且还尝试了后退按钮。然而,当我按下i.e.按钮时,没有任何事情发生,而是执行默认行为,即应用程序退出。

另一方面,如果我在eventlistener命令上用onBackKeyDown()替换onBackKeyDown,那么当应用程序加载时,我就会收到"Inside onBackKeyDown1“警报,就在上面提到的两个警报之后。但是一旦加载了应用程序,那么But按钮功能就不存在了。

我怎么才能让它工作呢?

更新

我已经意识到我需要包含cordova.js来捕获have按钮。一旦我添加了这一点,back按钮就会被困住。然而,作为结果,我得到了一个损坏的应用程序,如下所示:

我也尝试过将jQuery的版本从2.1改为1.11、1.10和1.4.5,但这并没有任何影响。事实上,即使我删除了jQuery,我仍然得到了损坏的界面。

EN

回答 2

Stack Overflow用户

发布于 2015-02-10 21:20:58

如果我没记错的话,移动设备上的警告框是异步的。应用程序可能没有时间显示警告框,因为它已经关闭。如果你做了一个console.log,你能在Eclipse logcat中读取它吗?或者,如果你做了一个阻止默认阻止关闭应用程序的操作:

代码语言:javascript
复制
 function onBackKeyDown(event) {
     event.preventDefault();
     $window.alert("Inside onBackKeyDown1");
 }
票数 0
EN

Stack Overflow用户

发布于 2015-02-11 16:51:32

下面是最终对我有效的方法,将所有这些放在部分中。尽管它在身体里也会起作用。不再是控制器。

代码语言:javascript
复制
  <link rel="stylesheet" href="js/bootstrap.min.css">
  <link rel="stylesheet" href="js/bootstrap-theme.min.css">

  <script src="js/jquery-1.11.2.min.js"></script>
  <script src="cordova.js"></script>        

  <script>
     document.addEventListener("deviceready", onDeviceReady(), false);

     function onDeviceReady() {

       document.addEventListener("backbutton", onBackKeyDown, true);

     }

     function onBackKeyDown() {
        alert('Back Button Pressed');
        resp = confirm("If you use Home key to exit, the App will remain active. Still want to Quit?");
        if (resp === true) {
          navigator.app.exitApp();
        }
     }
   </script>

  <script src="js/angular.min.js"></script>
  <script src="js/angular-resource.min.js"></script>
  <script src="js/bootstrap.min.js"></script>
  <script type="text/javascript" src="app.js"></script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28431935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档