调用默认Phonegap后退按钮处理程序

时间:2012-09-23 00:20:16

标签: javascript android iphone cordova

我有一个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() ;
} 

3 个答案:

答案 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

问候:)