在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 相关文章推荐
javascript实现的动态添加表单元素input,button等(appendChild)
Nov 24 Javascript
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
Jan 24 Javascript
js中switch case循环实例代码
Dec 30 Javascript
javascript实现的元素拖动函数宿主为浏览器
Jul 21 Javascript
js 动态修改css文件的方法
Aug 05 Javascript
jquery操作select方法汇总
Feb 05 Javascript
js 弹出虚拟键盘修改密码的简单实例
Oct 10 Javascript
基于node.js制作简单爬虫教程
Jun 29 Javascript
JavaScript伪数组用法实例分析
Dec 22 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
May 31 Javascript
Vue js 的生命周期(看了就懂)(推荐)
Mar 29 Javascript
vue项目中openlayers绘制行政区划
Dec 24 Vue.js
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基于方差和标准差计算学生成绩的稳定性示例
2017/07/04 PHP
jQuery使用手册之一
2007/03/24 Javascript
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
JavaScript 原型与继承说明
2010/06/09 Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
js和jquery如何获取图片真实的宽度和高度
2014/09/28 Javascript
javascript中数组array及string的方法总结
2014/11/28 Javascript
PHP守护进程实例
2015/03/06 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
JS获取url参数、主域名的方法实例分析
2016/08/03 Javascript
javascript数组遍历的方法实例分析
2016/09/13 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
详解vue mixins和extends的巧妙用法
2017/12/20 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
2019/12/22 Javascript
python requests 使用快速入门
2017/08/31 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
Django+Django-Celery+Celery的整合实战
2021/01/20 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
canvas生成带二维码海报的踩坑记录
2019/09/11 HTML / CSS
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
社会实践感言
2014/01/25 职场文书
平安建设实施方案
2014/03/19 职场文书
人事任命书格式
2014/06/05 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
小学副班长竞选稿
2015/11/21 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
一行代码python实现文件共享服务器
2021/04/22 Python
java设计模式--建造者模式详解
2021/07/21 Java/Android
Sleuth+logback 设置traceid 及自定义信息方式
2021/07/26 Java/Android
经典《舰娘》游改全新动画预告 预定11月开播
2022/04/01 日漫