在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 空位补零实现代码
Feb 26 Javascript
6个DIV 135或246间隔一秒轮番显示效果
Jul 24 Javascript
详解Javascript模板引擎mustache.js
Jan 20 Javascript
基于javascript简单实现对身份证校验
Jan 25 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
Jul 18 Javascript
JavaScript、C# URL编码、解码总结
Jan 21 Javascript
浅析Angular2子模块以及异步加载
Apr 24 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
Sep 06 Javascript
vue-router路由与页面间导航实例解析
Nov 07 Javascript
微信小程序实现点击文字页面跳转功能【附源码下载】
Dec 12 Javascript
jsonp实现百度下拉框功能的方法分析
May 10 Javascript
vue 开发企业微信整合案例分析
Dec 02 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和ACCESS写聊天室(三)
2006/10/09 PHP
使用PHP下载CSS文件中的图片的代码
2013/09/24 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
PHP实现文件上传与下载实例与总结
2016/03/13 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
详谈commonjs模块与es6模块的区别
2017/10/18 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
jquery分页插件pagination使用教程
2018/10/23 jQuery
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
JS如何在数组指定位置插入元素
2020/03/10 Javascript
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
[01:00:44]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第三局
2016/03/04 DOTA
[00:35]TI7不朽珍藏III——寒冰飞龙不朽展示
2017/07/15 DOTA
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
Python实现求最大公约数及判断素数的方法
2015/05/26 Python
Python编程使用*解包和itertools.product()求笛卡尔积的方法
2017/12/18 Python
浅谈Python中的私有变量
2018/02/28 Python
利用python GDAL库读写geotiff格式的遥感影像方法
2018/11/29 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
Python Tkinter实例——模拟掷骰子
2020/10/24 Python
初中高效课堂实施方案
2014/02/26 职场文书
新兵入伍心得体会
2014/09/04 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
2015年企业新年寄语
2014/12/08 职场文书
幼儿园父亲节活动总结
2015/02/12 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
如何写好闭幕词
2019/04/02 职场文书
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
2021/11/27 Vue.js