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 相关文章推荐
encode脚本和normal脚本混用的问题与解决方法
Mar 08 Javascript
一个基于jquery的文本框记数器
Sep 19 Javascript
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
Aug 13 Javascript
jQuery弹出层插件popShow(改进版)用法示例
Jan 23 Javascript
js获取ip和地区
Mar 10 Javascript
JS沙箱模式实例分析
Sep 04 Javascript
10 种最常见的 Javascript 错误(频率最高)
Feb 08 Javascript
JS内部事件机制之单线程原理
Jul 02 Javascript
vue elementUI tree树形控件获取父节点ID的实例
Sep 12 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
Nov 25 Javascript
使用pm2自动化部署node项目的方法步骤
Jan 28 Javascript
小程序实现长按保存图片的方法
Dec 31 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
简单实现限定phpmyadmin访问ip的方法
2013/03/05 PHP
windows环境下php配置memcache的具体操作步骤
2013/06/09 PHP
php实现数组中出现次数超过一半的数字的统计方法
2018/10/14 PHP
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
弹出广告特效代码(一个IP只弹出一次)
2007/05/11 Javascript
有关js的变量作用域和this指针的讨论
2010/12/16 Javascript
JS动态修改表格cellPadding和cellSpacing的方法
2015/03/31 Javascript
React.js入门学习第一篇
2016/03/30 Javascript
详解jQuery中的empty、remove和detach
2016/04/11 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
一个Vue页面的内存泄露分析详解
2018/06/25 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
python基础教程之常用运算符
2014/08/29 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
python 拼接文件路径的方法
2018/10/23 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
python文件拆分与重组实例
2018/12/10 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
python3 map函数和filter函数详解
2019/08/26 Python
Python进程池Pool应用实例分析
2019/11/27 Python
python 读取更新中的log 或其它文本方式
2019/12/24 Python
基于python实现复制文件并重命名
2020/09/16 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
事业单位个人应聘自荐信
2013/09/21 职场文书
建筑设计所实习生自我鉴定
2013/09/25 职场文书
银行柜员应聘推荐信范文
2013/11/24 职场文书
企业消防安全责任书
2014/07/23 职场文书
文明社区申报材料
2014/08/21 职场文书
农村党员干部承诺书
2015/05/04 职场文书
Python快速优雅的批量修改Word文档样式
2021/05/20 Python