2013-09-25 64 views
11

我已經使用cordova 2.6.0創建了Android app。我在我的應用中使用html標記和jQuery實施了menu功能,該功能在與設備menubutton進行交互時切換。但我無法想出達到以下要求,表現得像一個本地應用程序。Javascript後臺事件監聽器覆蓋了Android設備後退按鈕

要求

menu應該按設備的backbutton隱藏如果menuvisible。如果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); 

實際問題

如果我連着一個eventlistenerbackbutton設備的Back Button被禁止,它不正常的結果。

我的問題是

document.addEventListener('backbutton', function(){});在乘坐該裝置的後退按鈕?如何擺脫它?

這是在Android 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

如果我需要手動執行,如果有'歷史記錄'中沒有任何內容,並且如果有''歷史記錄'',如何退出'應用程序?請幫忙! – Lekhnath

0

要回答你的問題:

是document.addEventListener( '後退按鈕',函數(){});騎着設備的後退按鈕?如何擺脫它?

可以以及去除頁面重定向事件監聽器繼續使用後退按鈕的本地功能在後續頁。刪除事件監聽器的代碼如下:

document.removeEventListener("backbutton", onBackButton, false);其中onBackButton是與後退按鈕事件關聯的函數。