jquery mobile on phonegap backbutton event

时间:2013-07-04 21:37:07

标签: jquery-mobile cordova

我有以下代码:

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. 我的if条件从未输入,即使我的$.mobile.activePage.attr("id") === "home"为真(在weinre服务器上测试)
  2. navigator.app.exitApp从不起作用,这似乎发生在我的整个应用程序中,而不仅仅是这一个功能。
  3. 后退按钮在我的应用中没有响应。
  4. 知道为什么我会遇到这种奇怪的行为吗? Phonegap 2.6,jquery mobile 1.3.0并在Android 2.3.7上进行测试。

2 个答案:

答案 0 :(得分:0)

在我的测试中

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

完美无缺。

“navigator.app.exitApp()”已经无法正常工作,因为“navigator”指的是浏览器本身,PhoneGap应用程序不使用浏览器而是使用webview。

但是应用程序在每个操作系统版本上的行为方式如何,请尝试以下操作:

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

答案 1 :(得分:0)

我正在使用cordova和jquery mobile测试html5应用程序 - 对于Android和Blackberry,以下代码适用于我:

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");}
}