2012-10-18 26 views
1

我想在android中使用後退按鈕轉到主頁面,每當用戶按下後退按鈕並且當用戶未登錄時,應用程序應該出口。我已經嘗試過這種編碼,但它只適用於索引頁面和其他頁面,後退按鈕因爲已被禁用而起作用。我爲這個應用程序使用phonegap。在android中覆蓋後退按鈕只適用於索引頁面

$(文件)。就緒(函數(){ document.addEventListener( 「deviceready」,onDeviceReady,FALSE);

function onDeviceReady() { 
document.addEventListener("backbutton", onBackKeyDown, false); 

} 

}

我一直在下面的函數上的.js文件。

function onBackKeyDown() { 
    alert('Back Button!'); 
    if (window.localStorage.getItem("loggedInData") == "undefined" 
      && window.localStorage.getItem("loggedInData") == "") { 
     //location.href = 'main.html'; 
     alert('LoggedIn'); 

    } else { 
     alert('not logged in'); 
     navigator.app.exitApp(); 

    } 

}

回答

0

在我與PhoneGap的牛逼短暫經歷o得到這個工作,我不得不在document.ready之前調用onDeviceReady(我知道這沒有意義,但它對我來說是一個小項目)。

此外,如果我是基於頁上的後退按鈕分配不同的功能,我喜歡通過鏈接關()每次重新綁定之前如下面第一清除它們上():

$(document).off("deviceready").on("deviceready", PhoneGapReady); 
function PhoneGapReady(e) { 
    $(document).off("backbutton").on("backbutton", backHandler); 
} 
function backHandler(e) { 
    //back button pressed do something if you like 
} 

同樣在localstorage的if語句中,應該是'or'而不是'and'?

+0

它不工作...當我點擊主頁中的後退按鈕,我得到的錯誤說:10-19 10:30:19.915:E/Web控制檯(580):ReferenceError:無法找到變量:科爾多瓦在undefined:1我現在該做什麼? – Amu

+0

當我執行上述代碼時,出現以下錯誤... 10-19 11:19:42.108:D/CordovaWebView(963):KeyDown已在視圖上觸發 10-19 11:19:42.108:D/CordovaWebView(963):>>> loadUrlNow() 10-19 11:19:42.144:D/CordovaLog(963):ReferenceError:Can not find variable:cordova 10-19 11:19:42.144:D/CordovaLog (963):undefined:Line 1:ReferenceError:找不到變量:cordova 10-19 11:19:42.144:E/Web控制檯(963):ReferenceError:無法找到變量:cordova at undefined:1 – Amu

0

要讓後退按鈕適用於應用的每個頁面,請將以下代碼添加到每個html頁面。

$(document).ready(function() { 
$(document).on("deviceready", PhoneGapReady); 
function PhoneGapReady(e) { 
document.addEventListener("backbutton", onBackKeyDown, false); 
    } 

}

function onBackKeyDown(){ 
//your codes for back button 
} 

,並添加

<script>type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"</script>

到每一頁...... 因爲我使用的是cordova-2.0.0,我已經使用過了。