在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 相关文章推荐
不错的一个日期输入 动态
Nov 06 Javascript
一个JS翻页效果
Jul 23 Javascript
IE本地存储userdata的一个bug说明
Jul 01 Javascript
javascript中var的重要性分析
Feb 11 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
May 13 Javascript
js生成验证码并直接在前端判断
May 15 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
Sep 22 Javascript
jQuery实现分隔条左右拖动功能
Nov 21 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
Jul 20 Javascript
vue二级路由设置方法
Feb 09 Javascript
jQuery实现评论模块
Aug 19 jQuery
Vue组件化(ref,props, mixin,.插件)详解
May 15 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
一个简单的域名注册情况查询程序
2006/10/09 PHP
PHP新手上路(三)
2006/10/09 PHP
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
PHP正确解析UTF-8字符串技巧应用
2012/11/07 PHP
WordPress中is_singular()函数简介
2015/02/05 PHP
PHP与以太坊交互详解
2018/08/24 PHP
PHP生成短网址的思路以及实现方法的详解
2019/03/25 PHP
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
javascript 精粹笔记
2010/05/09 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
浅析JavaScript中的delete运算符
2013/11/30 Javascript
javascript将url中的参数加密解密代码
2014/11/17 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
微信小程序 安全包括(框架、功能模块、账户使用)详解
2017/01/16 Javascript
JavaScript实现动态添加Form表单元素的方法示例
2017/08/14 Javascript
JavaScript基础心法 数据类型
2018/03/05 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
Node.js文件编码格式的转换的方法
2018/04/27 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
Python列表(list)常用操作方法小结
2015/02/02 Python
python+django快速实现文件上传
2016/10/24 Python
tensorflow实现softma识别MNIST
2018/03/12 Python
django 删除数据库表后重新同步的方法
2018/05/27 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
使用k8s部署Django项目的方法步骤
2019/01/14 Python
python实现移位加密和解密
2019/03/22 Python
python Pillow图像处理方法汇总
2019/10/16 Python
详解python中eval函数的作用
2019/10/22 Python
python实现的汉诺塔算法示例
2019/10/23 Python
python 实现字符串下标的输出功能
2020/02/13 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
python右对齐的实例方法
2020/07/05 Python
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
《埃及的金字塔》教学反思
2014/04/07 职场文书
慰问敬老院活动总结
2014/04/26 职场文书
留学推荐信怎么写
2015/03/26 职场文书