Javascript后退按钮无法在Cordova应用上运行

时间:2017-11-09 19:36:27

标签: javascript cordova

我在这里使用此代码作为路由器来处理单页面应用程序中的页面( 科尔多瓦)。

var router = (function () {
    "use strict";
    var routes = [];
    function addRoute(route, handler) {
        routes.push({parts: route.split('/'), handler: handler});
    }
    function load(route) {
        window.location.hash = route;
    }
    function start() {
        var path = window.location.hash.substr(1),
            parts = path.split('/'),
            partsLength = parts.length;

        for (var i = 0; i < routes.length; i++) {
            var route = routes[i];
            if (route.parts.length === partsLength) {
                var params = [];
                for (var j = 0; j < partsLength; j++) {
                    if (route.parts[j].substr(0, 1) === ':') {
                        params.push(parts[j]);
                    } else if (route.parts[j] !== parts[j]) {
                        break;
                    }
                }
                if (j === partsLength) {
                    route.handler.apply(undefined, params);
                    return;
                }
            }
        }
    }
    $(window).on('hashchange', start);
    return {
        addRoute: addRoute,
        load: load,
        start: start
    };
}());

并且此路由器的使用方式如下:

router.addRoute('', function() {
    document.getElementById("bodyDiv").innerHTML = homePageHtml;
});
router.addRoute('page1', function() {
    document.getElementById("bodyDiv").innerHTML = page1Html;
});

我想在我的应用程序中添加后退按钮,但它不起作用。我确实试过了

  

window.history.back();

     

history.go(-1);

     

navigator.app.backHistory();

但它们都没有像它想象的那样工作。 当我在谷歌浏览器上打开应用程序时,它工作得很好,但当我使用Cordova将其转换为移动应用程序时,后退按钮无法按预期工作,有时后退按钮而不是带您到上一页刷新当前页面。

2 个答案:

答案 0 :(得分:1)

您可以使用:

  

这只是后退按钮的一个例子。

document.addEventListener("backbutton", function () {       
        exitAppPopup();        
}, false);

function exitAppPopup() {
    navigator.app.exitApp();
}

答案 1 :(得分:0)

你有没有试过这样的东西?

document.addEventListener("backbutton", back_function, false);

function back_function() {
    // Handle event
}