在做H5页面的时候,为了更好的模拟APP操作,提高用户体验,某些页面弹出提示框的时候,点击返回键隐藏提示框而不是返回到上一个页面
或者在做登录的时候,从A→B→C,我需要从C直接回到A而不经过B,这个时候,就要拦截返回键自己来定义事件
总的来说,vue也是js,离不开js
mounted() {
// 按需使用:A→B→C就需要页面一进来的时候,就添加一个历史记录
window.history.pushState(null, null, document.URL);
// 给window添加一个popstate事件,拦截返回键,执行this.onBrowserBack事件,addEventListener需要指向一个方法
window.addEventListener("popstate", this.onBrowserBack, false);
},
destroyed() {
// 当页面销毁必须要移除这个事件,vue不刷新页面,不移除会重复执行这个事件
window.removeEventListener("popstate", this.onBrowserBack, false);
},
watch: {
// 弹框监听,当弹框显示的时候,pushState添加一个历史,供返回键使用
PopupShow: {
handler(newVal, oldVal) {
if (newVal.Terms === true) {
window.history.pushState(null, null, document.URL);
}
},
deep: true
}
},
methods: {
onBrowserBack() {
// 这里写点击返回键时候的事件
// 比如判断需求执行back()或者go(-2)或者PopupShow=false隐藏弹框
}
}
popstate事件需要每个页面单独写,不适合写成公共方法