如何在Javascript中使用Ajax使Android手机的后退按钮工作?

时间:2017-06-30 05:49:21

标签: javascript jquery cordova back phonegap

我有以下代码来处理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() {}

2 个答案:

答案 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 });
    }

}