2013-09-25 60 views
11

我已经使用cordova 2.6.0创建了Android app。我在我的应用中使用html标记和jQuery实施了menu功能,该功能在与设备menubutton进行交互时切换。但我无法想出达到以下要求,表现得像一个本地应用程序。Javascript后台事件监听器覆盖了Android设备后退按钮

要求

menu应该按设备的backbutton隐藏如果menuvisible。如果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设备

回答

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

希望有所帮助。

+0

我可以改变'java'中的某些东西吗?或者它完全不可能吗? – Lekhnath

+0

我不知道java中的确切可能性,但这是编程的基本规则,一旦你重写了,你需要在你自己的函数中实现完整的功能。 – SHANK

+0

如果我需要手动执行,如果有'历史记录'中没有任何内容,并且如果有''历史记录'',如何退出'应用程序?请帮忙! – Lekhnath

0

要回答你的问题:

是document.addEventListener( '后退按钮',函数(){});骑着设备的后退按钮?如何摆脱它?

可以以及去除页面重定向事件监听器继续使用后退按钮的本地功能在后续页。删除事件监听器的代码如下:

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