繁体   English   中英

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

[英]Javascript backbutton event listener overrides the android device back button

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

需求

如果menu visiblemenu应隐藏在按设备的backbutton按钮上。 如果menu是不可见的backbutton现在应该正常行为,这是,无论是它应该exitapp或去back 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);

实际问题

如果我附加了eventlistenerbackbutton设备的Back Button被禁用,它不正常的结果。

我的问题是

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

这是在Android 4.1.2设备上发生的

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

在您的重写方法中,使用以下方法

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();
  }
});

希望有所帮助。

回答你的问题:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM