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寻找n以内完全数的方法
Jun 24 Javascript
jQuery 获取多选框的值及多选框中文的函数
May 16 Javascript
实例详解jQuery的无new构建
Aug 02 Javascript
jquery 动态增加删除行的简单实例(推荐)
Oct 12 Javascript
JS中with的替代方法与String中的正则方法详解
Dec 23 Javascript
JavaScript之面向对象_动力节点Java学院整理
Jun 29 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
Jul 17 Javascript
手写简单的jQuery雪花飘落效果实例
Apr 22 jQuery
Vue仿支付宝支付功能
May 25 Javascript
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
Oct 16 jQuery
详解vue页面首次加载缓慢原因及解决方案
Nov 06 Javascript
微信小程序实现底部弹出框
Nov 18 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开发中的错误收集,不定期更新。
2011/02/03 PHP
shopex中集成的站长统计功能的代码简单分析
2011/08/11 PHP
php 魔术方法详解
2014/11/11 PHP
php中session定期自动清理的方法
2015/11/12 PHP
PHP抽象类基本用法示例
2018/12/28 PHP
PHP数组基本用法与知识点总结
2020/06/02 PHP
(function($){...})(jQuery)的意思
2010/07/22 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
jquery和javascript的区别(常用方法比较)
2013/07/04 Javascript
JavaScript定时器详解及实例
2013/08/01 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
详解vue.js之props传递参数
2017/12/12 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
vue实现移动端input上传视频、音频
2020/08/18 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
[15:09]DOTA2国际邀请赛采访专栏:Loda
2013/08/06 DOTA
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
Python中matplotlib中文乱码解决办法
2017/05/12 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
python dir函数快速掌握用法技巧
2020/12/09 Python
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
剪枝的学问教学反思
2014/02/07 职场文书
感恩祖国演讲稿
2014/09/09 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
原告代理词范文
2015/05/25 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery