在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 相关文章推荐
jquery api参考 visualjquery 中国线路 速度快
Nov 30 Javascript
基于Jquery的简单&简陋Tabs插件代码
Feb 09 Javascript
JavaScript中json对象和string对象之间相互转化
Dec 26 Javascript
jquery制作居中遮罩层效果分享
Feb 21 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
Mar 02 Javascript
Angular2监听页面大小变化的解决方法
Oct 09 Javascript
vue将对象新增的属性添加到检测序列的方法
Feb 24 Javascript
vue绑定事件后获取绑定事件中的this方法
Sep 15 Javascript
Electron-vue脚手架改造vue项目的方法
Oct 22 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
Jul 15 Javascript
JS面试题中深拷贝的实现讲解
May 07 Javascript
React更新渲染原理深入分析
Dec 24 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的安全策略
2006/10/09 PHP
织梦模板标记简介
2007/03/11 PHP
PHP三元运算的2种写法代码实例
2014/05/12 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
php封装的smarty类完整实例
2016/10/19 PHP
改进:论坛UBB代码自动插入方式
2006/12/22 Javascript
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
dwz 如何去掉ajaxloading具体代码
2013/05/22 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
jquery右下角自动弹出可关闭的广告层
2015/05/08 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
Vue.js系列之项目结构说明(2)
2017/01/03 Javascript
jQuery实现链接的title快速出现的方法
2017/02/20 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
vue 使用饿了么UI仿写teambition的筛选功能
2021/03/01 Vue.js
简单说明Python中的装饰器的用法
2015/04/24 Python
python中的全局变量用法分析
2015/06/09 Python
浅析Python3爬虫登录模拟
2018/02/07 Python
Python单元测试实例详解
2018/05/25 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
Python测试Kafka集群(pykafka)实例
2019/12/23 Python
CSS3 简写animation
2012/05/10 HTML / CSS
Petmate品牌官方网站:宠物用品
2018/11/25 全球购物
优质护理服务演讲稿
2014/05/07 职场文书
民警个人对照检查剖析材料
2014/09/17 职场文书
教师节晚会主持词
2015/06/30 职场文书
自荐信大全
2019/03/21 职场文书
2020年元旦祝福语录,总有适合你的
2019/12/31 职场文书
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
Mysql数据库命令大全
2021/05/26 MySQL
Python中字符串对象语法分享
2022/02/24 Python
Python OpenGL基本配置方式
2022/05/20 Python