我正在使用Jquery Mobile / Phonegap开发Android应用程序。我有以下代码来控制手机的后退按钮:
document.addEventListener("backbutton", backKeyDown, true);
function backKeyDown() {
// Call my back key code here.
$.mobile.changePage("#homepage", "slideup");
}
这一切都运行正常,但我希望只在主页上按后退按钮关闭应用程序,这可能吗?
答案 0 :(得分:121)
更新:这已停止使用最新的Phonegap更新(据称)。如果您知道,请随时提供可行的解决方案。
我是这样做的:
document.addEventListener("backbutton", function(e){
if($.mobile.activePage.is('#homepage')){
/*
Event preventDefault/stopPropagation not required as adding backbutton
listener itself override the default behaviour. Refer below PhoneGap link.
*/
//e.preventDefault();
navigator.app.exitApp();
}
else {
navigator.app.backHistory()
}
}, false);
有关详细信息,请在此处找到相关文档,并附上完整示例:http://docs.phonegap.com/en/2.0.0/cordova_events_events.md.html#backbutton
答案 1 :(得分:12)
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
document.addEventListener("backbutton", onBackKeyDown, false);
}
function onBackKeyDown()
{
navigator.app.exitApp();
}
谢谢spader。
答案 2 :(得分:9)
您需要跟踪主页的显示时间。如果您知道自己正在主页上致电:
navigator.app.exitApp();
答案 3 :(得分:1)
如果您不想使用jQuery Mobile,请在@Spadar关闭答案上将$.mobile.activePage.is('#homepage')
更改为document.getElementById('#homepage')
,如以下代码所示:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady(){
document.addEventListener("backbutton", function(e){
if(document.getElementById('#homepage')){
e.preventDefault();
navigator.app.exitApp();
}
else {
navigator.app.backHistory()
}
}, false);
}
通过这种方式,不需要为此目的下载Jquery Mobile乱码。 Also, activePage is deprecated as of JQuery mobile 1.4.0并将从1.5.0中删除。 (Use the getActivePage() method from the pagecontainer widget instead)