场景:(vue cli2) app物理返回键在 tabbar 的页面按一次提示 :再按一次退出应用 ; 再按一次就退出app,在其余的页面点击返回上一页(12/18补充:监听返回键关闭弹窗 )
document.addEventListener('plusready', function () {
var webview = plus.webview.currentWebview();
var first = null;
plus.key.addEventListener('backbutton', function () {
webview.canBack(function (e) {
if (e.canBack) {
webview.back(-1);
} else {
//首页返回键处理
//处理逻辑:3秒内,连续两次按返回键,则退出应用;
//首次按键,提示‘再按一次退出应用’
if (new Date().getTime() - first < 3000) {
// console.log("关闭程序")
plus.runtime.quit();
} else {
//自定义的弹窗 (引入的vant.js 的toast)
Toast({
message: '再按一次退出应用',
position: 'bottom'
})
first = new Date().getTime();
}
}
})
});
});
把上边的代码直接放在 main.js 中就可以用了
贴一张图:
完成!!!
2019/12/18 补充,返回键关闭弹窗
首先分析一下生命周期 mounted ,很多人的第一反应是dom挂载,执行一次etc... 但是他有一个很容易被人忽略的功能:挂载!! 这个周期的时候你可以为当前页面挂载一个方法,这个方法用来监听手机的物理返回键!
mounted(){
if (window.history && window.history.pushState) {
history.pushState(null, null, document.URL);
window.addEventListener('popstate', this.fun, false);//false阻止默认事件
}
},
methods: {
fun(){
console.log('监听到了')
this.show = false
},
},
destroyed(){
window.removeEventListener('popstate', this.fun, false);//false阻止默认事件
},
别慌复制,你知道是复制在那里吗?
一般我们会把弹窗单独封装成一个组件,所以,之接把他复制到你的组件里就行了! 感恩!学习!!