在vue项目中利用popstate处理页面返回的操作介绍


Posted in Javascript onAugust 06, 2020

需求背景:项目中需要做一个返回确认,避免用户误触返回键而退出当前页面。

原理:利用history和浏览器刷新popstate状态

实现:

1、在mounted() 阶段判断并添加popstate事件监听,History.pushState()(参数:一个状态对象,一个标题(现在被忽略了),以及一个可选的URL地址), 注意:IOS版的微信,是会立即触发popstate事件,所以需要pageshow做下处理,(当一条会话历史记录被执行的时候将会触发页面显示(pageshow)事件。(这包括了后退/前进按钮操作,同时也会在onload 事件触发后初始化页面时触发))

在vue项目中利用popstate处理页面返回的操作介绍

2、在methods里定义监听操作函数

在vue项目中利用popstate处理页面返回的操作介绍

3、页面销毁时,取消监听。(注意:一定要取消监听,否则其他vue路由页面也会被监听)

在vue项目中利用popstate处理页面返回的操作介绍

补充知识:vue项目监测浏览器返回按钮

在WebApp或浏览器中,会有点击返回、后退、上一页等按钮实现自己的关闭页面、调整到指定页面、确认离开页面或执行一些其它操作的需求。可以使用 popstate 事件进行监听返回、后退、上一页操作。

简单介绍history中的操作

window.history.back(),后退

window.history.forward(),前进

window.history.go(num),前进或后退指定数量历史记录

window.history.pushState(state,title,url),在页面中穿件一个history实体。直接添加到历史记录中。参数: state:储存一个对象,可以添加相关信息,可以使用history.state读取其中的内容。title: 历史记录的标题,url:创建的历史记录rul,进行历史记录操作时会跳转到该链接。

window.history.replaceState(),修改当前的history实体。

popstate事件,history实体改变时触发事件

window.history.state,会获得history实体中的state对象。

使用方法

取消默认的返回操作

添加一条history实体作为替代原来的history实体

mounted () {
 if(window.history&&window.history.pushState){
 history.pushState(null,null,document.URL)
 window.addEventListener('popstate', this.goBack, false);
 }
},
destroyed(){
 window.removeEventListener('popstate',this.goBack,false);
},
methods:{
 goBack(){
 this.$router.replace({path:'/'});
 //replace替换原路由,作用是避免回退死循环
 }
}

以上这篇在vue项目中利用popstate处理页面返回的操作介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
popdiv
Jul 14 Javascript
JScript中使用ADODB.Stream判断文件编码的代码
Jun 09 Javascript
根据经纬度计算地球上两点之间的距离js实现代码
Mar 05 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
Feb 12 Javascript
JavaScript设计模式之策略模式实例
Oct 10 Javascript
javascript实现日期格式转换
Dec 16 Javascript
jquery性能优化高级技巧
Aug 24 Javascript
使用vue.js编写蓝色拼图小游戏
Mar 17 Javascript
JavaScript自执行函数和jQuery扩展方法详解
Oct 27 jQuery
使用百度地图实现地图网格的示例
Feb 06 Javascript
基于element-ui的rules中正则表达式
Sep 04 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
Oct 23 jQuery
JavaScript中作用域链的概念及用途讲解
Aug 06 #Javascript
解决vue字符串换行问题(绝对管用)
Aug 06 #Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
Aug 06 #Javascript
Vue Router中应用中间件的方法
Aug 06 #Javascript
JavaScript的垃圾回收机制与内存管理
Aug 06 #Javascript
vue-路由精讲 二级路由和三级路由的作用
Aug 06 #Javascript
如何利用javascript接收json信息并进行处理
Aug 06 #Javascript
You might like
在普通HTTP上安全地传输密码
2007/07/21 PHP
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
鼠标图片振动代码
2006/07/06 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
2015/03/19 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
Node中使用ES6语法的基础教程
2018/01/05 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
js实现抽奖功能
2020/11/24 Javascript
在HTML中使用JavaScript的两种方法
2020/12/24 Javascript
Python脚本实现12306火车票查询系统
2016/09/30 Python
centos6.4下python3.6.1安装教程
2017/07/21 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
python爬虫实例详解
2018/06/19 Python
Python函数中不定长参数的写法
2019/02/13 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
Django之PopUp的具体实现方法
2019/08/31 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
python中的itertools的使用详解
2020/01/13 Python
python如何写try语句
2020/07/14 Python
基于Python爬取股票数据过程详解
2020/10/21 Python
html5的localstorage详解
2017/05/09 HTML / CSS
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
linux面试题参考答案(6)
2016/06/23 面试题
追悼会上的答谢词
2014/01/10 职场文书
应聘编辑自荐信范文
2014/03/12 职场文书
迎新生标语大全
2014/10/06 职场文书
小学生读书笔记
2015/07/01 职场文书
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python
SQL实现LeetCode(197.上升温度)
2021/08/07 MySQL