vue监听浏览器原生返回按钮,进行路由转跳操作


Posted in Javascript onSeptember 09, 2020

今天测试给我报了个bug说点击浏览器返回页数据显示的不对,我查了半天原因:需要监听浏览器的回退按钮,并阻止其默认事件。

具体操作方法如下:

1、挂载完成后,判断浏览器是否支持popstate

mounted(){
   if (window.history && window.history.pushState) {
  history.pushState(null, null, document.URL);
  window.addEventListener('popstate', this.cancel, false);
 }
 },

2、页面销毁时,取消监听。否则其他vue路由页面也会被监听

destroyed(){
 window.removeEventListener('popstate', this.cancel, false);
 }

3、将监听操作写在methods里面,removeEventListener取消监听内容必须跟开启监听保持一致,所以函数拿到methods里面写

cancel: function() {
   if(this.orderId){
     this.$router.push({
      name:"orderList",
      params: {id:this.orderId},
        });
   }else{
   this.$router.go(-1);
   }
  },

补充知识:vue-router组件内导航守卫判断返回按钮

组件内导航守卫会出现无法拦截$router.go(-1)或者物理返回按钮,在拦截函数外包裹setTimeout即可。具体原因还未发现。

setTimeout(() => {
  this.$confirm('编辑的页面布局尚未保存,确定离开?', '提示', {
   confirmButtonText: '确定',
   cancelButtonText: '取消',
   type: 'warning'
  }).then(() => {
   next()
   return
  }).catch(() => {
   this.$message({
    type: 'info',
    message: '已取消'
   })
   next(false)
   return
  })
 }, 500)

以上这篇vue监听浏览器原生返回按钮,进行路由转跳操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript实现Sleep函数的代码
Mar 04 Javascript
javascript Xml增删改查(IE下)操作实现代码
Jan 30 Javascript
通过JS 获取Mouse Position(鼠标坐标)的代码
Sep 21 Javascript
getComputedStyle与currentStyle获取样式(style/class)
Mar 19 Javascript
JavaScript支持的最大递归调用次数分析
Jun 24 Javascript
jquery实现百叶窗效果
Jan 12 Javascript
详细AngularJs4的图片剪裁组件的实例
Jul 12 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
Dec 27 Javascript
element-ui 中的table的列隐藏问题解决
Aug 24 Javascript
微信小程序入口场景的问题集合与相关解决方法
Jun 26 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
Jul 21 Javascript
解决vue scoped html样式无效的问题
Oct 24 Javascript
JS实现斐波那契数列的五种方式(小结)
Sep 09 #Javascript
JavaScript代码简化技巧实例解析
Sep 09 #Javascript
vue 手机物理监听键+退出提示代码
Sep 09 #Javascript
关于angular引入ng-zorro的问题浅析
Sep 09 #Javascript
关于vue的列表图片选中打钩操作
Sep 09 #Javascript
JavaScript日期库date-fn.js使用方法解析
Sep 09 #Javascript
js实现简单抽奖功能
Nov 24 #Javascript
You might like
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
2011/04/23 PHP
CURL的学习和应用(附多线程实现)
2013/06/03 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
zf框架的数据库追踪器使用示例
2014/03/13 PHP
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
JS截取url中问号后面参数的值信息
2014/04/29 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
JavaScript中的getTime()方法使用详解
2015/06/10 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
jquery实现网页定位导航
2016/08/23 Javascript
JS弹性运动实现方法分析
2016/12/15 Javascript
深入理解JavaScript中的for循环
2017/02/07 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
20行JS代码实现网页刮刮乐效果
2017/06/23 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
vue开发中遇到的问题总结
2020/04/07 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
[00:35]DOTA2上海特级锦标赛 VP战队宣传片
2016/03/04 DOTA
Python中join和split用法实例
2015/04/14 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
python读取文本中的坐标方法
2018/10/14 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
2020/12/28 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
BONIA官方网站:国际奢侈品牌和皮革专家
2016/11/27 全球购物
ECCO爱步官方旗舰店:丹麦鞋履品牌
2018/01/02 全球购物
毕业生教师求职信
2013/10/20 职场文书
住房公积金接收函
2014/01/09 职场文书
高等教育学自荐书范文
2014/02/10 职场文书
文明风采获奖感言
2014/02/18 职场文书
在JavaScript中如何使用宏详解
2021/05/06 Javascript
Selenium浏览器自动化如何上传文件
2022/04/06 Python