后退按钮被截获 - Phonegap / Android

时间:2014-06-26 11:51:06

标签: javascript android html5 cordova

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

page2.html 中,我在 deviceReady 中重写后退按钮:

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

然后

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

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

问题:

  1. 这是预期的行为(覆盖一个意味着覆盖 有的话)?
  2. 如何摆脱这个? (将后门控件留给 Android随时我想)

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您可以根据每个页面返回按钮行为。示例如下所示。

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-更好地控制页面转换。

答案 2 :(得分:0)

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

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

我发现它here