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 相关文章推荐
js checkbox(复选框) 使用集锦
Apr 28 Javascript
javascript如何判断输入的url是否正确
Apr 11 Javascript
jQuery 重复加载错误以及修复方法
Dec 16 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
Jan 10 Javascript
详解Bootstrap插件
Apr 25 Javascript
JavaScript中清空数组的方法总结
Dec 02 Javascript
基于js实现的限制文本框只可以输入数字
Dec 05 Javascript
node内置调试方法总结
Feb 22 Javascript
Webpack的dll功能使用
Jun 28 Javascript
jQuery实现输入框的放大和缩小功能示例
Jul 21 jQuery
详解基于vue-cli3.0如何构建功能完善的前端架子
Oct 09 Javascript
详解Vue中组件传值的多重实现方式
Aug 16 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
PHP使用JSON和将json还原成数组
2015/02/12 PHP
php实现根据词频生成tag云的方法
2015/04/17 PHP
使用prototype.js进行异步操作
2007/02/07 Javascript
javascript模拟select,jselect的方法实现
2012/11/08 Javascript
基于jquery中children()与find()的区别介绍
2013/04/26 Javascript
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
Node.js实现的简易网页抓取功能示例
2014/12/05 Javascript
js中的事件捕捉模型与冒泡模型实例分析
2015/01/10 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
2016/09/04 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
Python中的探索性数据分析(功能式)
2017/12/22 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
python实现K最近邻算法
2018/01/29 Python
Python3实现购物车功能
2018/04/18 Python
Python3的介绍、安装和命令行的认识(推荐)
2018/10/20 Python
Django model update的多种用法介绍
2020/03/28 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
全球精选男装和家居用品:Article
2020/04/13 全球购物
linux面试题参考答案(8)
2016/04/19 面试题
UNIX文件系统分类
2014/11/11 面试题
十月份红领巾广播稿
2014/01/22 职场文书
2014年社区学雷锋活动总结
2014/03/09 职场文书
学校社会实践活动总结
2014/07/03 职场文书
2014年纳税评估工作总结
2014/12/23 职场文书