Javascript 截获的后退按钮-Phonegap/Android
在我的Android phonegap/Cordova 3.5项目中,我有3个html页面(在index.html中有一个按钮调用page2.html,其中有另一个按钮调用page3.html) 在page2.html中,我覆盖了在deviceReady中执行此操作的backbutton:Javascript 截获的后退按钮-Phonegap/Android,javascript,android,html,cordova,Javascript,Android,Html,Cordova,在我的Android phonegap/Cordova 3.5项目中,我有3个html页面(在index.html中有一个按钮调用page2.html,其中有另一个按钮调用page3.html) 在page2.html中,我覆盖了在deviceReady中执行此操作的backbutton: document.addEventListener("backbutton", onBackKeyDown, false); 然后 但是在page3.html中,我想让Android控制backbutton
document.addEventListener("backbutton", onBackKeyDown, false);
然后
但是在page3.html中,我想让Android控制backbutton,这样我就不会在page3.html中覆盖它。
相反,在page3.html中,backbutton被禁用
问题:
您可以在OnBackKeyDown事件中检查页面:
function onBackKeyDown() {
var pagename = // get the page name here
if ( pagename == page3.html ) {
history.back();
}
else {
navigator.app.exitApp();
}
}
您可以根据每页返回按钮行为。示例如下所示
function onBackKeyDown(e) {
if ($.mobile.activePage[0].id == "home"
|| $.mobile.activePage[0].id == "login") {
e.preventDefault();
navigator.app.exitApp();
}else if($.mobile.activePage[0].id == "inspection"){
e.preventDefault();
back();
//return false;
}else if($.mobile.activePage[0].id == "noDetails"){
e.preventDefault();
$.mobile.changePage("home.html");
return false;
}else{
navigator.app.backHistory();
}
}
我使用的是jQuery Mobile-可以更好地控制页面转换。这个问题的真正解决方案可能是使用以下API删除事件:
document.removeEventListener("backbutton", onBackKeyDown, false);
我发现它是这样的,您在每个文件中都包含了这个函数,对吗?如果您使用的是jqueryMobile,您只需要放置一次(在第一页中),因为jQM使用ajax填充每个页面。但是如果你不想,是的,你必须在任何地方都使用它。这个函数将包含在每个html中,我不想在其中截获backbutton事件,对吗?不,更改你现有的函数。在这个函数中检查你的页面,如果你想返回你调用的history.back(),否则你的退出函数callit只有在函数包含在所有地方时才起作用,在没有包含的页面中backbutton页面只是被禁用了。你可以创建一个javascript文件,将这个函数放在其中,并添加对所有html文件的引用
document.removeEventListener("backbutton", onBackKeyDown, false);