在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 相关文章推荐
div层的移动及性能优化
Nov 16 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
Jan 23 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
Apr 26 Javascript
js实现简单登录功能的实例代码
Nov 09 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
Sep 06 Javascript
JavaScript动态修改网页元素内容的方法
Mar 21 Javascript
jQuery插件制作之参数用法实例分析
Jun 01 Javascript
原生js实现addClass,removeClass,hasClass方法
Apr 27 Javascript
详解基于Vue+Koa的pm2配置
Oct 24 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
Feb 08 Javascript
layui的table中显示图片方法
Aug 17 Javascript
JS实现音乐导航特效
Jan 06 Javascript
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
php 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
基于initPHP的框架介绍
2013/04/18 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
PHP实现本地图片转base64格式并上传
2020/05/29 PHP
用javascript实现在小方框中浏览大图的代码
2007/08/14 Javascript
javascript中简单的进制转换代码实例
2013/10/26 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
jQuery中的类名选择器(.class)用法简单示例
2018/05/14 jQuery
Vue中 key keep-alive的实现原理
2018/09/18 Javascript
vue+php实现的微博留言功能示例
2019/03/16 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
2019/09/05 Javascript
纯js+css实现仿移动端淘宝网站的弹出详情框功能
2019/12/29 Javascript
[14:50]2018DOTA2亚洲邀请赛开幕式
2018/04/03 DOTA
Python实现根据指定端口探测服务器/模块部署的方法
2014/08/25 Python
Python操作串口的方法
2015/06/17 Python
Python3 实现文件批量重命名示例代码
2019/06/03 Python
python之拟合的实现
2019/07/19 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
在python3中使用shuffle函数要注意的地方
2020/02/28 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
基于Python制作一副扑克牌过程详解
2020/10/19 Python
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
澳大利亚男士西服品牌:M.J.Bale
2018/02/06 全球购物
寻找完美的房车租赁:RVShare
2019/02/23 全球购物
关键字final的用法
2013/10/02 面试题
建筑经济管理专业求职信分享
2014/01/06 职场文书
电脑销售顾问自荐信
2014/01/29 职场文书
给领导的检讨书
2014/02/16 职场文书
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
体育教师个人工作总结
2015/02/09 职场文书
建党伟业电影观后感
2015/06/01 职场文书