Javascript backbutton事件监听器覆盖android设备后退按钮

时间:2013-09-25 06:31:53

标签: javascript android jquery cordova back-button

我使用Android app创建了cordova 2.6.0。我在我的应用中使用menu标记和html实现了jQuery功能,该功能可以切换与设备的menubutton进行交互。但我无法想出达到以下要求,就像本机应用程序一样。

要求

如果menubackbuttonmenu应隐藏在按设备的visible上。如果看不到menu,则backbutton现在应该正常行动,即exit appback history

这是我的代码

document.addEventListener('deviceready', function(){

document.addEventListener('menubutton', function(){
//Toggle Menu
//Which is working fine
});

document.addEventListener('backbutton', function(){
if(menu is visible) {
  //Hide the menu
  //This is also working fine
return false;
} 

//BUT the default action of backbutton has gone. It cannot exit the app , neither it brings to back history.

//return true;
//I have also tried to return boolean true , but facing the same problem.
});

}, false);

实际问题

如果我为eventlistener附加backbutton设备的Back Button被禁用,则无法正常工作。

我的问题是

document.addEventListener('backbutton', function(){});是否超过了设备的后退按钮?如何摆脱它?

这在Android 4.1.2设备上发生

2 个答案:

答案 0 :(得分:10)

使用侦听器覆盖后退按钮后,它不会执行本机功能。您还必须实现退出行为。

在最重要的方法中,使用以下

document.addEventListener('backbutton', function(){
  if(menu is visible) {
       //Hide the menu
       //This is also working fine
   return false;
  }
  else //nothing is visible, exit the app
  {
    navigator.app.exitApp();
  }
});

希望有所帮助。

答案 1 :(得分:1)

回答你的问题:

  

是document.addEventListener('backbutton',function(){});超过设备的后退按钮?如何摆脱它?

您还可以删除页面重定向上的事件侦听器,以便在后续页面中继续使用后退按钮的本机功能。用于删除事件侦听器的代码如下:

document.removeEventListener("backbutton", onBackButton, false);其中onBackButton是与后退按钮事件关联的函数。