我有一个phonegap应用程序,需要我捕获后退按钮。这可以游泳,但是当我在主屏幕并按下后退按钮时,我想调用原始事件处理程序,让应用程序关闭或通过这样的按下来做任何自然的平台。我知道我可以告诉应用程序退出,但要理解这是iPhone应用程序的糟糕形式。
无论我尝试什么(我尝试过很多东西),我都无法解决原始处理程序问题。有什么建议?
在我的代码中,我在后台按钮事件处理程序中有一个switch语句,指示应用程序需要以下效果:
switch blahBlah
{
case 'this' :
doThis() ;
break;
case 'main' :
// What do I do here that is well behaved for all platforms???
break;
default:
doFoo() ;
}
落在主屏幕上时检测并删除自定义事件处理程序。
document.removeEventListener( "backbutton", function(){}, false );
并在其他页面(或部分)上添加事件侦听器。
document.addEventListener( "backbutton", OverrideBackButton, false );
希望有所帮助。
这就是我所使用的,它似乎可以满足我的需求
function pageinit() {
document.addEventListener("deviceready", deviceInfo, true);
}
function deviceInfo() {
document.addEventListener("backbutton", onBackButton, true);
}
function onBackButton(e) {
try{
var activePage = $.mobile.activePage.attr('id');
if(activePage == 'Options'){
closeOptions();
} else if(activePage == 'Popup'){
closePopup();
} else if(activePage == 'HomePage'){
function checkButtonSelection(iValue){
if (iValue == 2){
navigator.app.exitApp();
}
}
e.preventDefault();
navigator.notification.confirm(
"Are you sure you want to EXIT the program?",
checkButtonSelection,
'EXIT APP:',
'Cancel,OK');
} else {
navigator.app.backHistory();
}
} catch(e){ console.log('Exception: '+e,3); }
}
希望这可以帮助...
Cordova 7.x,至少在Android上,似乎没有正确更新覆盖状态。因此,@SHANK's answer不再起作用了。
作为解决方法,您可以手动禁用后退按钮覆盖,从而导致默认行为:
navigator.app.overrideBackbutton(false);
要重新激活自定义处理,请执行以下操作:
navigator.app.overrideBackbutton(true);
一个简单而顺利的方法可以是这样的,这个陈述适用于我的情况:
if($("#mainPage").is(".ui-page-active")){
navigator.app.exitApp();
}
我正在使用jQuery:http://demos.jquerymobile.com/1.0a3/docs/api/globalconfig.html
问候 :)