6

戻るボタンをキャプチャする必要がある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() ;
} 
4

3 に答える 3

4

メイン画面が表示されたら検出し、カスタムイベントハンドラーを削除します。

document.removeEventListener( "backbutton", function(){}, false );

他のページ(またはセクション)にイベントリスナーを追加します。

document.addEventListener( "backbutton", OverrideBackButton, false );

お役に立てば幸いです。

于 2013-01-15T08:36:01.920 に答える
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); }
        }

お役に立てれば...

于 2012-09-24T15:09:06.927 に答える
2

Cordova 7.xは、少なくともAndroidでは、オーバーライド状態を適切に更新していないようです。結果として、@SHANKの答えはもう機能しません。

回避策として、戻るボタンのオーバーライドを手動で無効にして、デフォルトの動作にすることができます。

navigator.app.overrideBackbutton(false);

カスタム処理を再アクティブ化するには、同様に次のようにします。

navigator.app.overrideBackbutton(true);

これに関して、Apacheの課題追跡システムにバグレポートを提出しました。

于 2018-03-03T18:26:10.747 に答える