在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 技巧和窍门整理(8个)
Apr 22 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
Jul 20 Javascript
CheckBoxList多选样式jquery、C#获取选择项
Sep 06 Javascript
javascript多行字符串的简单实现方式
May 04 Javascript
不得不分享的JavaScript常用方法函数集(上)
Dec 23 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
Feb 14 Javascript
基于jQuery实现仿微博发布框字数提示
Jul 27 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
Jan 04 Javascript
JavaScript实现的搜索及高亮显示功能示例
Aug 14 Javascript
基于iScroll实现内容滚动效果
Mar 21 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
Nov 27 Javascript
使用Vue 自定义文件选择器组件的实例代码
Mar 04 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
一个odbc连mssql分页的类
2006/10/09 PHP
解析PHP无限级分类方法及代码
2013/06/21 PHP
php实现webservice实例
2014/11/06 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
PHP清除缓存的几种方法总结
2017/09/12 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
Js 获取HTML DOM节点元素的方法小结
2009/04/24 Javascript
event对象的方法 兼容多浏览器
2009/06/27 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
js表单中选择框值的获取及表单的序列化
2015/12/17 Javascript
JS修改地址栏参数实例代码
2016/06/14 Javascript
Augularjs-起步详解
2016/07/08 Javascript
AngularJS表达式讲解及示例代码
2016/08/16 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
微信小程序纯文本实现@功能
2020/04/08 Javascript
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
基于JavaScript实现简单的轮播图
2021/03/03 Javascript
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
Python爬取Coursera课程资源的详细过程
2014/11/04 Python
python自定义解析简单xml格式文件的方法
2015/05/11 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
python requests使用socks5的例子
2019/07/25 Python
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
澳大利亚个性化儿童礼品网站:Bright Star Kids
2019/06/14 全球购物
励志演讲稿3分钟
2014/08/21 职场文书
就业协议书范本
2014/10/08 职场文书
公务员年度个人总结
2015/02/12 职场文书
万能检讨书开头与结尾怎么写
2015/02/17 职场文书
联谊会开场白
2015/06/01 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书
科普 | 业余无线电知识-波段篇
2022/02/18 无线电