2013-09-25 8 views
11

cordova 2.6.0を使用して作成しました。私はhtmlマークアップを使って私のアプリにmenu機能を実装しました。また、と対話することで切り替えるjQueryを実装しました。しかし、ネイティブアプリのように動作するには、次の要件を満たすことができませんでした。Javascriptのバックボタンイベントリスナーは、アンドロイドデバイスのバックボタンを無効にします

menuvisibleある場合menuはプレス装置のbackbuttonに非表示にする

要件。 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); 

である私はbackbuttonためeventlistenerを取り付けた場合は、デバイスのBack Buttonは、それは通常どおりに動作しない、無効になっています。

私の質問は

は、デバイスの[戻る]ボタンを乗り超えるdocument.addEventListener('backbutton', function(){});ですか?どのようにそれを取り除く?

これは、リスナーを使用してバックボタンを上書きしたら、それは本来の機能を実行しませんアンドロイド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

私はそれを手動で行う必要がある場合、 'history'に何もない場合、どうすれば'終了 'し、もしあれば 'back history'に行くことができますか?助けてください! – Lekhnath

0

はdocument.addEventListener( '戻るボタン'、機能(){})です。上のデバイスの戻るボタンを超えて?どのようにそれを取り除く?

ページリダイレクトでイベントリスナーを削除して、後続ページの戻るボタンのネイティブ機能を引き続き使用することもできます。次のようにイベントリスナーを削除するコード:

document.removeEventListener("backbutton", onBackButton, false);ここで、onBackButtonは、戻るボタンイベントに関連付けられた関数です。

関連する問題