web app 中物理返回键的监听

使用Vue + Vant 进行web app 的开发,需要处理 android 自带的物理返回键,对不同页面,点击物理返回键进行不同的处理
 

那如何监听到物理返回键,并进行相应的处理?

 
 

app网页返回键 vs 手机物理返回键

 

网页上的返回键是返回上一个页面的意思,
手机上的返回键是返回上一个操作。
 

并且手机上的返回键还有很多其它功能,在使用某些软件可以双击返回键退出app

 
 

Vue 中监听物理返回键

 

使用h5+ 提供的 plus 对象进行处理,具体代码如下
 

document.addEventListener('plusready', function () {
        var webview = plus.webview.currentWebview();
        plus.key.addEventListener('backbutton', function () {
            webview.canBack(function (e) {
                if (e.canBack) {
                    webview.back(-1); //返回上一页 
                } else {
                    webview.close(); //关闭应用 
                }
            })
        });

 
 

plus is not defined

 

在使用过程中,会遇到错误"plus is not defined" , 所以,在使用plus时,注意判断plus是否存在。

代码如下:

if (window.plus) {
        this.plusReady()
} else {
        document.addEventListener('plusready', this.plusReady, false)
}

将 backbutton 事件的添加,处理程序,写在 plusReady 方法中,即可
 
 

单击返回,双击退出app

 

实现,单击返回键进行退出,双击退出app

分析:通过一个 first 变量来记录次数,且两次点击的时间间隔不能超过1500.

代码如下:

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

作者:doubleyong

公众号:bug收集

博客:bugshouji.com (专门解决与收集bug的网站)

 

欢迎添加下面的 “公众号” ,可以第一时间获到文章推送 @_@
'公众号'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bug收集

谢谢老板的鼓励,我会继续加油

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值