Vue 移动端 监听物理返回键 如何阻止路由跳转?

vue 移动端的项目,在监听到物理返回键的时候,会先执行路由跳转,然后才会执行返回键的函数。这样就没法阻止路由跳转,有没有什么方法可以在跳转之前进行阻止。也就是我点了物理返回键之后,进行一些操作,但是路由不让他跳转?

有試過導航守衛嗎? beforeRouteUpdate之類的

这种貌似不行。普通点击跳转也会执行这些函数,需求是在五个主页面点击返回,然后执行一段操作,如果使用beforeRouteUpdate或beforeRouteLeave这类的话,点击执行的跳转同样会被阻断

抱歉我不太清楚你點擊了物理返回鍵後要讓路由去哪?然後進行操作…等等。
阻止路由是可行的。

就是在指定的页面中点击返回,路由哪里都不去,就进行操作,不进行跳转

更簡單來說就是你要阻止他的物理返回鍵功能

最近也遇到这个问题,一直也没找到好的方法解决,只是用了个蹩脚方法临时满足一下需求。
赶紧手动@大神,看看有没有好的答案。 :joy:

https://blog.csdn.net/weixin_38644883/article/details/86538340

微信公众号中用的,
前提是你的.vue页面没有使用 beforeRouteLeave

export default {
  data () {
    return {
      popStateNext : true,
      popStateRouter : {}
    }
  },
  methods : {
    resetRouterName () {
      let that = this;
			that.popStateNext = false;
      window.removeEventListener('popstate',()=>{
      	console.log('移出监听')
			},false)
    },
    popStateInit ( router = {} ) {
			let that = this;
      that.popStateRouter = router
			if ( window.__wxjs_is_wkwebview === true ) {
				//function ...  WKWebview ios
				that.popStateInitIos()
			} else if ( window.__wxjs_is_wkwebview === false || window.__wxjs_is_wkwebview === undefined ) {
				//function ...  UIWebview
				that.popStateInitAndroid();
			}
    },
    popStateInitIos () {
      let that = this;
      window.addEventListener('popstate', function ( e ) {
				e.preventDefault();
				e.stopPropagation();
        if ( that.popStateNext ) {
					that.resetRouterName()
          that.$router.push(that.popStateRouter)
          return false
        }
      }, false)
    },
    popStateInitAndroid () {
      let that = this;
      window.addEventListener('popstate', function ( e ) {
        e.preventDefault();
        if ( that.popStateNext ) {
					that.resetRouterName()
          that.$router.push(that.popStateRouter)
          return false
        }
      }, false)
    }
  },
	beforeDestroy () {
  	this.resetRouterName();
	}
}

问题已经解决了, 但是解决的方法相当的笨,就是判断路由,先满足下需求吧。找到了好办法在加以改之。

好嘞 非常感谢 ,有时间会去看的

你好,我现在也遇到了同样的业务需求场景,请问你是怎么处理的

@nan1010082085 ,如果我的页面是从第三方网页跳转过来的,现在操作安卓物理返回,会直接回到第三方的那个网页,有什么办法可以让其不再回到三方网页,并且能触发一个事件,在这个事件中可以进行相关一些操作,比如发一个url scheme通知native关闭当前Chrome浏览器,因为这个浏览器本身就是在native app里打开的