在vue里面,阻止浏览器返回键(包括安卓硬件返回)

在做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事件需要每个页面单独写,不适合写成公共方法

你可能感兴趣的:(在vue里面,阻止浏览器返回键(包括安卓硬件返回))