2013-07-04 48 views
1

我有以下代碼:jQuery Mobile的

document.addEventListener("deviceready", onDeviceReady, false); 

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

function onBackKeyDown() { 
    if ($.mobile.activePage.attr("id") === "home") { 
     e.preventDefault(); 
     navigator.app.exitApp(); //not working 
    } 
} 

正在進入我的onBackKeyDown()功能,現在我得到了一系列奇怪的事件:

  1. 我如果條件從來沒有進入,即使當我的$.mobile.activePage.attr("id") === "home"是真的(在weinre服務器上測試)
  2. navigator.app.exitApp從來沒有工作,這似乎發生在我的整個應用程序,而不僅僅是這一個功能。
  3. 後退按鈕在我的應用程序中無響應。

任何想法,爲什麼我得到這種奇怪的行爲? Phonegap 2.6,jquery mobile 1.3.0和在Android 2.3.7上測試。

+0

你如何調用該函數是什麼時候? – Omar

回答

0

在我這裏測試

if ($.mobile.activePage.attr("id") === "home") { 

完美。

已經「navigator.app.exitApp()」不會真正起作用,因爲「導航器」是指瀏覽器本身,PhoneGap應用程序不使用瀏覽器而是使用webview。

但應用程序的行爲不同的每個操作系統版本,請嘗試以下操作:

if(navigator.app){ 
     navigator.app.exitApp(); 
}else if(navigator.device){ 
     navigator.device.exitApp(); 
} 
0

我測試HTML5應用與科爾多瓦和jQuery移動 - Android和黑莓下面的代碼爲我工作:

var ua = navigator.userAgent; 
window.device = { 
iphone: ua.match(/(iPhone|iPod|iPad)/), 
blackberry7: ua.match(/91|93|97|96|97|9800|9810|9850|9860|99/), 
blackberry10: ua.match(/BB|PlayBook|Tablet/), 
android: ua.match(/Android/) 
} 
//window.device ready for blackberry 
if (window.device.blackberry7){ 
    document.addEventListener('deviceready', onDeviceReady, false); 
} 
//window.device ready for android 
else { 
    window.addEventListener('load', onDeviceReady, false); 
} 

然後:

function onDeviceReady(){ 
document.addEventListener("backbutton", onBackKeyDown, false); 
document.addEventListener("menubutton", onMenuKeyDown, false); 
document.addEventListener("searchbutton", onSearchKeyDown, false); 
} 
function onBackKeyDown(){ 
if (window.device.blackberry7){blackberry.app.exit();} 
if (!window.device.blackberry7){navigator.app.exitApp();} 
} 
function onMenuKeyDown(){ 
if (window.device.blackberry7){alert("BB Menu key");} 
if (!window.device.blackberry7){alert("Menu key");} 
} 
function onSearchKeyDown(){ 
if (window.device.blackberry7){alert("BB Search key");} 
if (!window.device.blackberry7){alert("Search key");} 
}