后退按钮拦截永远- Phonegap/Android

Back Button intercepted for ever - Phonegap/Android

本文关键字:Phonegap Android 永远 按钮      更新时间:2023-09-26

在我的Android phonegap/Cordova 3.5项目,我有3个html页面(一个按钮在index.html调用page2.html那里有另一个按钮调用page3.html)。

page2.html我重写backbutton在deviceReady:

document.addEventListener("backbutton", onBackKeyDown, false);
然后

function onBackKeyDown() {
            console.log("onBackKeyDown");
            navigator.app.exitApp();
        }

但在page3.html我想让Android控制后退按钮,所以我不覆盖它在page3.html。相反,在page3.html中,backbutton被禁用。

问题:

  1. 这是预期的行为吗(重写一个意味着重写for曾经)吗?
  2. 如何摆脱这个?(离开控制的后退按钮Android随时随地我想)

你可以在OnBackKeyDown事件中检查页面:

function onBackKeyDown() {
  var pagename = // get the page name here
  if ( pagename == page3.html ) {
    history.back();
  }
  else {
    navigator.app.exitApp();
  }
}

您可以根据每个页面后退按钮行为。示例如下:

function onBackKeyDown(e) {
        if ($.mobile.activePage[0].id == "home"
            || $.mobile.activePage[0].id == "login") {
            e.preventDefault();
            navigator.app.exitApp();
        }else if($.mobile.activePage[0].id == "inspection"){
            e.preventDefault();
            back();
            //return false;
        }else if($.mobile.activePage[0].id == "noDetails"){
            e.preventDefault();
            $.mobile.changePage("home.html");
            return false;
        }else{
            navigator.app.backHistory();
        }
    }

我正在使用jQuery Mobile-提供更多的控制页面过渡

这个问题的真正解决方案可能是用这个API删除事件:

document.removeEventListener("backbutton", onBackKeyDown, false);

I found it here