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 相关文章推荐
Prototype Array对象 学习
Jul 19 Javascript
javascript中parseInt()函数的定义和用法分析
Dec 20 Javascript
移动Web中图片自适应的两种JavaScript解决方法
Jun 18 Javascript
基于jquery实现在线选座订座之影院篇
Aug 24 Javascript
JS实现自动变换的菜单效果代码
Sep 09 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
Sep 05 Javascript
Angularjs 制作购物车功能实例代码
Sep 14 Javascript
微信小程序 教程之注册页面
Oct 17 Javascript
JS 实现Base64编码与解码实例详解
Nov 07 Javascript
jQuery事件绑定方法学习总结(推荐)
Nov 21 Javascript
Vue 解决多级动态面包屑导航的问题
Nov 04 Javascript
Java无向树分析 实现最小高度树
Apr 09 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树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
php写入文件不覆盖的实例讲解
2019/09/17 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
JavaScript经典效果集锦
2010/07/06 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
2012/05/04 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
浅谈JavaScript中指针和地址
2015/07/26 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
bootstrap+spring boot实现面包屑导航功能(前端代码)
2019/10/09 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
[02:14]完美“圣”典2016风云人物:xiao8专访
2016/12/01 DOTA
[48:00]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第二场 11.04
2020/11/04 DOTA
Python json模块使用实例
2015/04/11 Python
深入理解Django中内置的用户认证
2017/10/06 Python
Flask框架响应、调度方法和蓝图操作实例分析
2018/07/24 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
pytorch之Resize()函数具体使用详解
2020/02/27 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
python生成word合同的实例方法
2021/01/12 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
2014年计生工作总结
2014/11/21 职场文书
民政局标准版离婚协议书
2014/12/01 职场文书
质检员工作总结2015
2015/04/25 职场文书
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技