Vue监听页面刷新和关闭功能


Posted in Javascript onJune 20, 2019

我在做项目的时候,有一个需求,在离开(跳转或者关闭)购物车页面或者刷新购物车页面的时候向服务器提交一次购物车商品数量的变化。

将提交的一步操作放到 beforeDestroy 钩子函数中。

beforeDestroy() { console.log('销毁组件')
 this.finalCart()},

但是发现  beforeDestroy 只能监听到页面间的跳转,无法监听到页面刷新和关闭标签页。

所以还是要借助 onbeforeunload 事件。

顺便复习了一下 JavaScript 中的一些加载,卸载事件:

  • 页面加载时只执行 onload 事件。
  • 页面关闭时,先 onbeforeunload 事件,再 onunload 事件。
  • 页面刷新时先执行 onbeforeunload 事件,然后 onunload  事件,最后 onload  事件。

Vue中监听页面刷新和关闭

1. 在methods中定义事件方法:

methods: {
 beforeunloadFn(e) {
  console.log('刷新或关闭')
  // ...
 }
}

2. 在created 或者 mounted 生命周期钩子中绑定事件

created() {
 window.addEventListener('beforeunload', e => this.beforeunloadFn(e))
}

3. 在 destroyed 钩子卸载事件

destroyed() {
 window.removeEventListener('beforeunload', e => this.beforeunloadFn(e))
}

测试了页面刷洗和关闭都能监听到。

回到我自己的项目,可以使用 onbeforeunload 事件和 beforeDestroy 钩子函数结合:

created() {
 this.initCart()
 window.addEventListener('beforeunload', this.updateHandler)
},
beforeDestroy() {
 this.finalCart() // 提交购物车的异步操作},
destroyed() {
 window.removeEventListener('beforeunload', this.updateHandler)},
methods: {
 updateHandler() {
  this.finalCart()
 },
 finalCart() {
  // ...
 }
}

总结

以上所述是小编给大家介绍的Vue监听页面刷新和关闭功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
Ajax::prototype 源码解读
Jan 22 Javascript
jquery插件制作 图片走廊 gallery
Aug 17 Javascript
关于query Javascript CSS Selector engine
Apr 12 Javascript
javascript 手动给表增加数据的小例子
Jul 10 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
Jan 12 Javascript
jQuery中trigger()方法用法实例
Jan 19 Javascript
Window.Open打开窗体和if嵌套代码
Apr 15 Javascript
js实现华丽的九九乘法表效果
Mar 29 Javascript
vuejs实现本地数据的筛选分页功能思路详解
Nov 15 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
Oct 19 Javascript
js实现input密码框显示/隐藏功能
Sep 10 Javascript
js实现简易计算器功能
Oct 18 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
Jun 20 #Javascript
js实现页面多个日期时间倒计时效果
Jun 20 #Javascript
vue实现绑定事件的方法实例代码详解
Jun 20 #Javascript
javascript实现5秒倒计时并跳转功能
Jun 20 #Javascript
JS实现的简单tab切换功能完整示例
Jun 20 #Javascript
Vue 页面权限控制和登陆验证功能的实例代码
Jun 20 #Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
Jun 20 #jQuery
You might like
德生BCL3000的电路分析和打磨
2021/03/02 无线电
php5 pdo新改动加载注意事项
2008/09/11 PHP
thinkPHP5.0框架安装教程
2017/03/25 PHP
javascript 解析url的search方法
2010/02/09 Javascript
javascript string字符串优化问题
2011/07/31 Javascript
浅谈Javascript鼠标和滚轮事件
2012/06/27 Javascript
js 通用订单代码
2013/12/23 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
React-router 4 按需加载的实现方式及原理详解
2017/05/25 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
微信小程序点击view动态添加样式过程解析
2020/01/21 Javascript
JavaScript享元模式原理与用法实例详解
2020/03/09 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
使用python统计文件行数示例分享
2014/02/21 Python
python中的hashlib和base64加密模块使用实例
2014/09/02 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
python抓取网页中链接的静态图片
2018/01/29 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
Python 2种方法求某个范围内的所有素数(质数)
2020/01/31 Python
如何用python处理excel表格
2020/06/09 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
Python爬虫防封ip的一些技巧
2020/08/06 Python
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
Cotton On美国网站:澳洲时装连锁品牌
2016/10/25 全球购物
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
三年级音乐教学反思
2014/01/28 职场文书
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
Python基础教程,Python入门教程(超详细)
2021/06/24 Python