Javascript 后退按钮在 Cordova 应用程序上不起作用

标签 javascript cordova

我在这里使用此代码作为路由器来处理单页应用程序中的页面( 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();

但它们都没有按照预期的方式工作。 当我在 google chrome 上打开应用程序时,它工作得很好,但是当我使用 Cordova 将其转换为移动应用程序时,后退按钮无法按预期工作,有时后退按钮不会将您带到上一页,而是会刷新当前页面。

最佳答案

你可以使用这个:

This is only an example for backbutton press.

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

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

关于Javascript 后退按钮在 Cordova 应用程序上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47210159/

相关文章:

javascript,保存对嵌套对象文字的引用

javascript - 使用带有登录系统的 Electron 在 2 个 HTML 文件之间传递输入变量

javascript - 棘轮 push.js 与 phonegap (cordova)

angular - 找不到 'ramda' 的类型定义文件

android - 尝试使用人行横道构建 apk 时构建失败

iphone - HTML 视频只能通过耳机播放声音 -iOS?

cordova - 哪些版本的 iOS 和 Android webview 已经支持 ES6 模块?

javascript - 从 TinyMCE 中删除所有内容过滤

javascript - jQuery .hover 和 .mouseleave 意外循环。我该如何解决

javascript - 使用 CSS 分隔词组并强制换行