在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检测函数
May 31 Javascript
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
May 23 Javascript
jQuery图片播放8款精美插件分享
Feb 17 Javascript
Javascript 浮点运算的问题分析与解决方法
Aug 27 Javascript
jquery实现pager控件示例
Apr 09 Javascript
jquery form 加载数据示例
Apr 21 Javascript
js怎么判断flash swf文件是否加载完毕
Aug 14 Javascript
jQuery中:text选择器用法实例
Jan 03 Javascript
javascript事件的绑定基础实例讲解(34)
Feb 14 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
Mar 30 Javascript
解决LayUI数据表格复选框不居中显示的问题
Sep 25 Javascript
Vue-Cli项目优化操作的实现
Oct 27 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出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
PHP SPL使用方法和他的威力
2013/11/12 PHP
功能强大的php分页函数
2016/07/20 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
2013/04/07 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
Node.js编写组件的三种实现方式
2016/02/25 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
bootstrap css样式之表单
2017/01/19 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
js实现幻灯片轮播图
2020/08/14 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
简单谈谈python中的多进程
2016/11/06 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
python3.x上post发送json数据
2018/03/04 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
python 解压pkl文件的方法
2018/10/25 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
2019/08/09 Python
Python绘图实现显示中文
2019/12/04 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
python中str内置函数用法总结
2020/12/27 Python
css3 线性渐变和径向渐变示例附图
2014/04/08 HTML / CSS
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
教师师德教育的自我评价
2013/10/31 职场文书
音乐学院硕士生的自我评价分享
2013/11/01 职场文书
年度考核评语
2014/01/19 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
六一活动主持词
2015/06/30 职场文书
大学生暑假实习总结
2015/07/13 职场文书
普希金诗歌赏析(6首)
2019/08/22 职场文书
webpack的移动端适配方案小结
2021/07/25 Javascript