我有以下代码:
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()
功能,现在我收到了一系列奇怪的事件:
$.mobile.activePage.attr("id") === "home"
为真(在weinre服务器上测试)知道为什么我会遇到这种奇怪的行为吗? Phonegap 2.6,jquery mobile 1.3.0并在Android 2.3.7上进行测试。
答案 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");}
}