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 相关文章推荐
判断对象是否Window的实现代码
Jan 10 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
Oct 08 Javascript
JavaScript设计模式之装饰者模式介绍
Dec 28 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
Mar 04 Javascript
前端微信支付js代码
Jul 25 Javascript
jQuery多文件异步上传带进度条实例代码
Aug 16 Javascript
微信小程序 wxapp导航 navigator详解
Oct 31 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
Jul 05 Javascript
vue.js,ajax渲染页面的实例
Feb 11 Javascript
Vue源码解析之数组变异的实现
Dec 04 Javascript
Vue自定义全局Toast和Loading的实例详解
Apr 18 Javascript
浅谈vue中$bus的使用和涉及到的问题
Jul 28 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
咖啡冲泡指南 咖啡有哪些制作方式 单品咖啡 意式咖啡
2021/03/06 冲泡冲煮
php2html php生成静态页函数
2008/12/08 PHP
php下过滤html代码的函数 提高程序安全性
2010/03/02 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
2011/03/12 Javascript
JS注释所产生的bug 即使注释也会执行
2013/11/19 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
只需五句话搞定JavaScript作用域(经典)
2016/07/26 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
2017/03/11 Javascript
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
2017/06/19 Javascript
Vue.js用法详解
2017/11/13 Javascript
React Native开发封装Toast与加载Loading组件示例
2018/09/08 Javascript
Python使用MONGODB入门实例
2015/05/11 Python
python脚本开机自启的实现方法
2019/06/28 Python
基于django传递数据到后端的例子
2019/08/16 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
html5服务器推送_动力节点Java学院整理
2017/07/12 HTML / CSS
Staples英国官方网站:办公用品一站式采购
2017/10/06 全球购物
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
工厂门卫岗位职责
2013/11/25 职场文书
科研先进个人典型材料
2014/01/31 职场文书
合作经营协议书范本
2014/04/17 职场文书
刑事上诉状范文
2015/05/22 职场文书
付款证明模板
2015/06/19 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python