在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 相关文章推荐
ExtJS扩展 垂直tabLayout实现代码
Jun 21 Javascript
不同浏览器的怪癖小结
Jul 11 Javascript
jquery入门—选择器实现隔行变色实例代码
Jan 04 Javascript
jquery实现省市select下拉框的替换(示例代码)
Feb 22 Javascript
php is_numberic函数造成的SQL注入漏洞
Mar 10 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
Apr 28 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
Oct 18 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
Oct 28 Javascript
js仿搜狐视频记录片列表展示效果
May 30 Javascript
分析JavaScript数组操作难点
Dec 18 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
Mar 26 Javascript
在Vue中使用mockjs代码实例
Nov 25 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木马攻击防御之道
2008/03/24 PHP
php与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
PHP 透明水印生成代码
2012/08/27 PHP
php5.3 不支持 session_register() 此函数已启用的解决方法
2013/11/12 PHP
PHP创建桌面快捷方式的实例代码
2014/02/17 PHP
smarty内置函数config_load用法实例
2015/01/22 PHP
一起来写段JS drag拖动代码
2010/12/09 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
JS实现网页背景颜色与select框中颜色同时变化的方法
2015/02/27 Javascript
详解Python中logging日志模块在多进程环境下的使用
2016/12/26 Javascript
基于require.js的使用(实例讲解)
2017/09/07 Javascript
详解vuex之store拆分即多模块状态管理(modules)篇
2018/11/13 Javascript
Web安全之XSS攻击与防御小结
2018/12/13 Javascript
15分钟学会vue项目改造成SSR(小白教程)
2019/12/17 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
使用Python中的线程进行网络编程的入门教程
2015/04/15 Python
初探TensorFLow从文件读取图片的四种方式
2018/02/06 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
把csv文件转化为数组及数组的切片方法
2018/07/04 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
Python 迭代,for...in遍历,迭代原理与应用示例
2019/10/12 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
2020/07/14 Python
Python读取Excel一列并计算所有对象出现次数的方法
2020/09/04 Python
利用python 读写csv文件
2020/09/10 Python
Python尾递归优化实现代码及原理详解
2020/10/09 Python
Django解决frame拒绝问题的方法
2020/12/18 Python
《值日生》教学反思
2014/02/17 职场文书
《长相思》听课反思
2014/04/10 职场文书
党员教师群众路线对照检查材料思想汇报
2014/09/29 职场文书
实习生矿工检讨书
2014/10/13 职场文书
军训结束新闻稿
2015/07/17 职场文书
司法廉洁教育心得体会
2016/01/20 职场文书
让人瞬间清醒的句子,句句经典,字字如金
2019/07/08 职场文书
《金肉人》米特&《航海王》阿鹤声优松岛实因胰脏癌去世 享寿81岁
2022/04/13 日漫
Python可视化神器pyecharts之绘制箱形图
2022/07/07 Python