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 相关文章推荐
IE和Firefox下event事件杂谈
Dec 18 Javascript
Extjs学习笔记之三 extjs form更多的表单项
Jan 07 Javascript
WEB 浏览器兼容 推荐收藏
May 14 Javascript
jQuery之$(document).ready()使用介绍
Apr 05 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
Jan 13 Javascript
JQuery中ajax方法访问web服务实例
Jul 18 Javascript
jquery实现邮箱自动填充提示功能
Nov 17 Javascript
如何利用JSHint减少JavaScript的错误
Aug 23 Javascript
Vue实现双向绑定的方法
Dec 22 Javascript
Angular2下使用pdf插件的方法详解
Apr 29 Javascript
小程序实现订单倒计时功能
Apr 23 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
Jul 19 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读取html并截取字符串的简单代码
2009/11/30 PHP
php Calender(日历)代码分享
2014/01/03 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
取得一定长度的内容,处理中文
2006/12/20 Javascript
JavaScipt基本教程之前言
2008/01/16 Javascript
使用JQuery和s3captche实现一个水果名字的验证
2009/08/14 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
JS请求servlet功能示例
2017/06/01 Javascript
浅谈es6 javascript的map数据结构
2017/12/14 Javascript
vue+element tabs选项卡分页效果
2020/06/29 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
Python多进程编程技术实例分析
2014/09/16 Python
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
Python实现求数列和的方法示例
2018/01/12 Python
Django中redis的使用方法(包括安装、配置、启动)
2018/02/21 Python
Python装饰器知识点补充
2018/05/28 Python
python画图--输出指定像素点的颜色值方法
2019/07/03 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
Python自动化导出zabbix数据并发邮件脚本
2019/08/16 Python
ipad上运行python的方法步骤
2019/10/12 Python
python实现数字炸弹游戏程序
2020/07/17 Python
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
小学新学期教师寄语
2014/01/18 职场文书
室内趣味活动方案
2014/08/24 职场文书
关于读书的演讲稿1000字
2014/08/27 职场文书
大学生实习证明范本
2014/09/19 职场文书
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL