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 相关文章推荐
jquery radio 操作代码
Mar 16 Javascript
解决IE6的PNG透明JS插件使用介绍
Apr 17 Javascript
JS 实现图片直接下载示例代码
Jul 22 Javascript
js获取滚动距离的方法
May 30 Javascript
使用AngularJS对路由进行安全性处理的方法
Jun 18 Javascript
JS打字效果的动态菜单代码分享
Aug 21 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
Feb 29 Javascript
js滑动提示效果代码分享
Mar 10 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
Dec 08 Javascript
JS实现页面打印(整体、局部)
Aug 18 Javascript
微信小程序 WXML节点信息查询详解
Jul 29 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
Dec 16 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中常用数组处理方法实例分析
2008/08/30 PHP
深入php处理整数函数的详解
2013/06/09 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
php输出文字乱码的解决方法
2019/10/04 PHP
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
2013/08/08 Javascript
JS数组去重与取重的示例代码
2014/01/24 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
轻松实现JavaScript图片切换
2016/01/12 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
原生js实现返回顶部缓冲效果
2017/01/18 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
python Kmeans算法原理深入解析
2019/08/23 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
使用CSS Grid布局实现网格的流动
2014/12/30 HTML / CSS
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
雷蛇美国官网:Razer
2020/04/03 全球购物
.NET方向面试题
2014/11/20 面试题
八年级数学教学反思
2014/01/31 职场文书
2014年端午节演讲稿范文
2014/05/23 职场文书
电子专业自荐信
2014/07/01 职场文书
圣贤教育改变命运观后感
2015/06/16 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python