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 url传值中文乱码之解决之道
Nov 20 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
Mar 14 Javascript
JavaScript之编码规范 推荐
May 23 Javascript
js实现弹窗插件功能实例代码分享
Dec 12 Javascript
Node.js实用代码段之正确拼接Buffer
Mar 17 Javascript
Bootstrap每天必学之警告框插件
Apr 26 Javascript
js中json处理总结之JSON.parse
Oct 14 Javascript
使用json-server简单完成CRUD模拟后台数据的方法
Jul 12 Javascript
在vue项目中使用md5加密的方法
Sep 14 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
Apr 22 Javascript
使用原生js编写一个简单的框选功能方法
May 13 Javascript
Angular8路由守卫原理和使用方法
Aug 29 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
将文件夹压缩成zip文件的php代码
2009/12/14 PHP
php中mysql模块部分功能的简单封装
2011/09/30 PHP
Thinkphp关闭缓存的方法
2015/06/26 PHP
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
JS 自动安装exe程序
2008/11/30 Javascript
js apply/call/caller/callee/bind使用方法与区别分析
2009/10/28 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
AngularJS语法详解
2015/01/23 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
解决html input验证只能输入数字,不能输入其他的问题
2017/07/21 Javascript
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
JavaScript中重名的函数与对象示例详析
2017/09/28 Javascript
仿淘宝JSsearch搜索下拉深度用法
2018/01/15 Javascript
Angular(5.2->6.1)升级小结
2018/12/27 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
详解Python import方法引入模块的实例
2017/08/02 Python
Python类中方法getitem和getattr详解
2019/08/30 Python
Python装饰器用法与知识点小结
2020/03/09 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
2020/03/10 Python
详解python tcp编程
2020/08/24 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
explicit和implicit的含义
2012/11/15 面试题
物业保安主管岗位职责
2013/12/25 职场文书
办公室文员自荐书
2014/02/03 职场文书
幼儿园教学管理制度
2014/02/04 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
北京奥运会口号
2014/06/21 职场文书
2014年党员自我评议对照检查材料
2014/09/20 职场文书
五年级学生评语大全
2014/12/26 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
2016年秋季趣味运动会开幕词
2016/03/04 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python