我有以下代码来处理Javascript中Framework 7的设备后退按钮。我想知道所有后续页面是否都在使用Ajax,如何使用后退按钮返回到我之前的页面。此时,按“返回”按钮,始终会提示用户是否要退出应用程序。该应用程序有20页,但它们都显示为Ajax页面而不是HTML页面。
<!-- We don't need full layout here, because this page will be parsed with Ajax-->
请帮忙。谢谢你的帮助!
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
// device APIs are available
function onDeviceReady() {
// Register the event listener
document.addEventListener("backbutton", onBackKeyDown, false);
document.addEventListener("menubutton", onMenuKeyDown, false);
}
// Handle the back button
function onBackKeyDown(e) {
e.preventDefault();
navigator.notification.confirm("Are you sure you want to exit?", onConfirm, "Confirmation", "Yes,No");
//navigator.app.backHistory();
if (document.getElementById('#homepage')) {
e.preventDefault();
navigator.app.exitApp();
navigator.notification.confirm("Are you sure you want to exit?", onConfirm, "Confirmation", "Yes,No");
} else {
navigator.app.backHistory();//This line doesn't work when tried on the if function - it seems useless - maybe not supported anymore?
//the code never gets here coz other pages are simply loaded as Ajax, and there is only 1 index.html - how to fix?
}
}
function onConfirm(button) {
if (button == 2) { //If the user selected No, then we just do nothing
return;
} else {
navigator.app.exitApp(); // Otherwise we quit the app.
}
}
// Handle the menu button
function onMenuKeyDown() {}
答案 0 :(得分:0)
我认为这里的问题是页面在DOM中,但没有显示。
if (document.getElementById('#homepage')) {
当您在另一个页面上时,可以检查此HTML元素是否具有类或特定样式。
如果您正在使用ajax,我认为此HTML元素将具有hidden
类或display: none
样式,因此我希望其中一个适用于您:
document.querySelectorAll('#content[style="display: none;"]')
document.querySelectorAll('#content.hidden')
答案 1 :(得分:0)
在框架7应用程序上,您可以使用mainView.router.back()
处理返回按钮以返回到之前的页面。
function onBackKeyDown(e) { if(mainView.activePage.name == 'yourhomepagename') { e.preventDefault(); navigator.notification.confirm("Are you sure you want to exit?", onConfirm, "Confirmation", "Yes,No"); } else { mainView.router.back({ ignoreCache: true }); } }