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 中调用 javascript 打开 Excel 表
Dec 21 Javascript
javascript入门基础之私有变量
Feb 23 Javascript
js实现的点击数量加一可操作数据库
May 09 Javascript
javascript属性访问表达式用法分析
Apr 25 Javascript
jQuery Ajax 全局调用封装实例代码详解
Jun 02 Javascript
angular学习之从零搭建一个angular4.0项目
Jul 10 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
Aug 14 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
Feb 21 Javascript
微信小程序调用微信支付接口的实现方法
Apr 29 Javascript
微信公众号开发之微信支付代码记录的实现
Oct 16 Javascript
在vue中使用echarts(折线图的demo,markline用法)
Jul 20 Javascript
VUE使用 wx-open-launch-app 组件开发微信打开APP功能
Aug 11 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编程效率的53个要点(经验小结)
2010/09/04 PHP
利用php获取服务器时间的实现代码
2013/06/07 PHP
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
jquery中$(#form :input)与$(#form input)的区别
2014/08/18 Javascript
javascript实现选中复选框后相关输入框变灰不可用的方法
2015/08/11 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
javascript实现多张图片左右无缝滚动效果
2017/03/22 Javascript
详解angular element()方法使用
2017/04/08 Javascript
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
JS中利用swiper实现3d翻转幻灯片实例代码
2017/08/25 Javascript
微信小程序实现的picker多级联动功能示例
2019/05/23 Javascript
NodeJS http模块用法示例【创建web服务器/客户端】
2019/11/05 NodeJs
Javascript如何实现扩充基本类型
2020/08/26 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
解决js中的setInterval清空定时器不管用问题
2020/11/17 Javascript
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
python开根号实例讲解
2020/08/30 Python
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
房屋租赁意向书
2014/04/01 职场文书
社区爱国卫生月活动总结
2014/06/30 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
汽车销售员工作总结
2015/08/12 职场文书
2015年度考核个人工作总结
2015/10/24 职场文书
《刷子李》教学反思
2016/02/20 职场文书
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers