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解析URL参数示例代码
Aug 12 Javascript
JavaScript DOM 编程艺术(第2版)读书笔记(JavaScript的最佳实践)
Oct 01 Javascript
得到form下的所有的input的js代码
Nov 07 Javascript
js解析json读取List中的实体对象示例
Mar 11 Javascript
js表单中选择框值的获取及表单的序列化
Dec 17 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
Jan 08 Javascript
Jquery删除css属性的简单方法
Dec 04 Javascript
完美实现js焦点轮播效果(一)
Mar 07 Javascript
微信小程序中显示html格式内容的方法
Apr 25 Javascript
JavaScript中EventLoop介绍
Jan 22 Javascript
解决vue同一slot在组件中渲染多次的问题
Sep 06 Javascript
JavaScript的console命令使用实例
Dec 03 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
怎样去阅读一份php源代码
2009/08/21 PHP
PHP面向对象分析设计的61条军规小结
2010/07/17 PHP
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
PHP登录环节防止sql注入的方法浅析
2014/06/30 PHP
php使用crypt()函数进行加密
2017/06/08 PHP
Aster vs Newbee BO3 第二场2.18
2021/03/10 DOTA
jquery.validate使用攻略 第三部
2010/07/01 Javascript
JavaScript浏览器选项卡效果
2010/08/25 Javascript
node.js中的querystring.stringify方法使用说明
2014/12/10 Javascript
jQuery的观察者模式详解
2014/12/22 Javascript
基于PHP和Mysql相结合使用jqGrid读取数据并显示
2015/12/02 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
2016/11/24 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
如何区分vue中的v-show 与 v-if
2020/09/08 Javascript
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
举例详解Python中的split()函数的使用方法
2015/04/07 Python
python编码最佳实践之总结
2016/02/14 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
Python3.6简单反射操作示例
2018/06/14 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
详解Canvas事件绑定
2018/06/27 HTML / CSS
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
英国巧克力贸易公司:Chocolate Trading Company
2017/03/21 全球购物
请解释流与文件有什么不同
2016/07/29 面试题
室内设计自我鉴定
2013/10/15 职场文书
售后服务经理岗位职责
2014/02/25 职场文书
优秀德育工作者事迹材料
2014/05/07 职场文书
篮球友谊赛通讯稿
2014/10/10 职场文书
后备干部推荐材料
2014/12/24 职场文书
神龙架导游词
2015/02/11 职场文书
雷锋观后感
2015/06/10 职场文书
python读取pdf格式文档的实现代码
2021/04/01 Python
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers