PhoneGap – android的退出button

我正在尝试使用jquery mobile和cordova来编程RSS阅读器。 我的RSS阅读器由3个页面组成(在相同的HTML文档中:page1,page2,page3)。 我试图覆盖(硬件)后退行为,所以它会退出程序。 为了检查我在项目设置中没有犯任何错误,我使用了PhoneGap示例项目并将其加载到Eclipse中。 每个示例函数工作,所以我已经将我的index.html和res文件夹移动到phonegap示例。 在我的index.html中,导入下列脚本:

<script src="res/jquery-1.7.1.min.js"></script> <script src="res/jquery.mobile-1.1.1.min.js"></script> <script type="text/javascript" charset="utf-8" src="cordova-2.0.0.js"></script> <script type="text/javascript" charset="utf-8" src="main.js"></script> 

和我的main.js文件看起来像这样:

 document.addEventListener("backbutton", function(e){ if($.mobile.activePage.is('#homepage')){ e.preventDefault(); navigator.app.exitApp(); } else { navigator.app.backHistory() } }, false); 

你可以在第一个代码示例中检查我的脚本的版本。 关于如何让代码工作的任何想法,只要按下我的Xperia Arc上的后退button,它就会退出应用程序。 如果需要,我可以上传我的完整代码。

编辑:我已经testingphonegap(cordova)嘟嘟声function,我的android手机,它的作品,所以这没有任何与坏的脚本实施。 它必须是在main.js文件中的东西。 也许一些兼容性问题与jquerymobile后退function和phonegap后退function。

您需要等待设备准备好添加事件侦听器:

 document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady(){ document.addEventListener("backbutton", function(e){ if($.mobile.activePage.is('#homepage')){ e.preventDefault(); navigator.app.exitApp(); } else { navigator.app.backHistory() } }, false); } 

如果您不想使用任何库,可以使用window.location.hash来获取您的应用程序所在的“面板”。 例如:

 function onDeviceReady(){ document.addEventListener("backbutton", function(e){ if(window.location.hash=='#home'){ e.preventDefault(); navigator.app.exitApp(); } else { navigator.app.backHistory() } }, false); } document.addEventListener("deviceready", onDeviceReady, false); 

如果您不想使用Jquery Mobile,请在@mornaner答案中将$ .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乱码。 此外,activePage从JQuery移动1.4.0弃用,将从1.5.0中删除。 ( 使用pagecontainer小部件中的getActivePage()方法 )

 function onLoad() { document.addEventListener("deviceready", onDeviceReady, false); } //enter code here enter code heredevice APIs are available //enter code here function onDeviceReady() { // Register the event listener document.addEventListener("backbutton", onBackKeyDown, false); } // Handle the back button // function onBackKeyDown() { }