我有一个phonegap应用程序,需要我捕获后退按钮。这可以游泳,但是当我在主屏幕并按下后退按钮时,我想调用原始事件处理程序,让应用程序关闭或者使用这样的按钮对平台做任何自然的事情。我知道我可以告诉应用程序退出,但要理解这是iPhone应用程序的不良形式。
无论我尝试什么(我尝试了很多东西),我都无法解决原始处理程序问题。有什么建议?
在我的代码中,我的backbutton事件处理程序中有一个switch语句,可根据需要指示应用程序的效果:
switch blahBlah
{
case 'this' :
doThis() ;
break;
case 'main' :
// What do I do here that is well behaved for all platforms???
break;
default:
doFoo() ;
}
答案 0 :(得分:4)
无论何时登陆主屏幕并检索自定义事件处理程序,都会检测到。
document.removeEventListener( "backbutton", function(){}, false );
并在其他页面(或部分)上添加事件侦听器。
document.addEventListener( "backbutton", OverrideBackButton, false );
希望有所帮助。
答案 1 :(得分:3)
这就是我所使用的,似乎可以满足我的需求
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); }
}
希望这会有所帮助......
答案 2 :(得分:-1)
一种简单而流畅的方法可以是这样的,这个陈述适用于我的情况:
if($("#mainPage").is(".ui-page-active")){
navigator.app.exitApp();
}
我正在使用jQuery:http://demos.jquerymobile.com/1.0a3/docs/api/globalconfig.html
问候:)