解决Hbuilder打包的apk文件按手机返回键直接退出软件
问题描述:Hbuilder打包的app如果点击手机返回键,app会直接退出,返回不了上一页。

写在公共js文件中,每个页面均引入该js,代码如下:

document.addEventListener('plusready', function() {

var webview = plus.webview.currentWebview();
plus.key.addEventListener('backbutton', function() {
    webview.canBack(function(e) {
        if(e.canBack) {
            webview.back();
        } else {
            webview.close(); //hide,quit按手机返回键直接退出APP
            //plus.runtime.quit();
        }
    })
});

});

上面的一段代码即可实现按手机返回键时返回上一页,当返回到首页,再按手机返回键即可退出APP,下面的代码可以不要

点击手机返回键两次提示退出程序,代码如下:

注: 在hbuilder中新建移动App时,选择模板-mui项目,在页面中引入mui.js以及mui.min.js,点击两次退出程序效果才会实现
mui.plusReady(function() {

            //首页返回键处理
            //处理逻辑:1秒内,连续两次按返回键,则退出应用;
            var first = null;
            plus.key.addEventListener('backbutton', function() {
                //首次按键,提示‘再按一次退出应用’
                if (!first) {
                    first = new Date().getTime();
                    mui.toast('再按一次退出应用');
                    setTimeout(function() {
                        first = null;
                    }, 1000);
                } else {
                    if (new Date().getTime() - first < 1000) {
                        plus.runtime.quit();
                    }
                }
            }, false);
        });

按手机返回键返回上一页 + 点击手机返回键两次提示退出程序效果,完整js代码:

注:此段代码当在首页,按手机返回键时无效果,不会退出APP,要点击两次才行

<script>
document.addEventListener('plusready', function() {

    var webview = plus.webview.currentWebview();
    plus.key.addEventListener('backbutton', function() {
        webview.canBack(function(e) {
            if(e.canBack) {
                webview.back();             
            } else {
                //webview.close(); //hide,quit
                //plus.runtime.quit();
                mui.plusReady(function() {
                    //首页返回键处理
                    //处理逻辑:1秒内,连续两次按返回键,则退出应用;
                    var first = null;
                    plus.key.addEventListener('backbutton', function() {
                        //首次按键,提示‘再按一次退出应用’
                        if (!first) {
                            first = new Date().getTime();
                            mui.toast('再按一次退出应用');
                            setTimeout(function() {
                                first = null;
                            }, 1000);
                        } else {
                            if (new Date().getTime() - first < 1500) {
                                plus.runtime.quit();
                            }
                        }
                    }, false);
                });
            }
        })
    });
});

</script>

标签: none

添加新评论