在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 面向对象编程 function也是类
Sep 17 Javascript
JS对象与json字符串格式转换实例
Oct 28 Javascript
jQuery()方法的第二个参数详解
Apr 29 Javascript
jQuery满屏焦点图左右滚动特效代码分享
Sep 07 Javascript
jQuery实现仿QQ头像闪烁效果的文字闪动提示代码
Nov 03 Javascript
在javascript中创建对象的各种模式解析
May 16 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
May 24 Javascript
在Vue中使用Compass的方法
Mar 02 Javascript
vue 自定义指令自动获取文本框焦点的方法
Aug 25 Javascript
webpack 静态资源集中输出的方法示例
Nov 09 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
Dec 25 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
Aug 14 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 IP及IP段进行访问限制的代码
2008/12/17 PHP
简单PHP上传图片、删除图片实现代码
2010/05/12 PHP
php 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
PHP制作用户注册系统
2015/10/23 PHP
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
replace()方法查找字符使用示例
2013/10/28 Javascript
jQuery中用dom操作替代正则表达式
2014/12/29 Javascript
js完整倒计时代码分享
2016/09/18 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
2018/10/19 Javascript
js继承的这6种方式!(上)
2019/04/23 Javascript
使用Karma做vue组件单元测试的实现
2020/01/16 Javascript
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
Python实现建立SSH连接的方法
2015/06/03 Python
python 3利用BeautifulSoup抓取div标签的方法示例
2017/05/28 Python
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
python实现多张图片拼接成大图
2019/01/15 Python
python英语单词测试小程序代码实例
2019/09/09 Python
jupyter lab文件导出/下载方式
2020/04/22 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
2013/01/09 HTML / CSS
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
新闻记者个人求职的自我评价
2013/11/28 职场文书
2014新课程改革心得体会
2014/03/10 职场文书
意向书范文
2014/03/31 职场文书
《画》教学反思
2014/04/14 职场文书
2015年班长个人工作总结
2015/04/03 职场文书
工程质量保证书
2015/05/09 职场文书
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android