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 相关文章推荐
超轻量级的基于jquery的三级展开列表
Apr 26 Javascript
简介JavaScript中的setTime()方法的使用
Jun 11 Javascript
JS实现跟随鼠标的链接文字提示框效果
Aug 06 Javascript
javascript性能优化之DOM交互操作实例分析
Dec 12 Javascript
Extjs 点击复选框在表格中增加相关信息行
Jul 12 Javascript
js绘制购物车抛物线动画
Nov 18 Javascript
常用的javascript设计模式
Jan 11 Javascript
详解Angualr 组件间通信
Jan 21 Javascript
详解如何在vue中使用sass
Jun 21 Javascript
js 实现复选框只能选择一项的示例代码
Jan 23 Javascript
微信小程序实现分享朋友圈的图片功能示例
Jan 18 Javascript
Element MessageBox弹框的具体使用
Jul 27 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
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
php查看session内容的函数
2008/08/27 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
setAttribute 与 class冲突解决
2008/02/17 Javascript
Jquery AutoComplete自动完成 的使用方法实例
2010/03/19 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
angular简介和其特点介绍
2015/01/29 Javascript
jQuery拖拽插件gridster使用指南
2015/04/21 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
js 获取当前web应用的上下文路径实现方法
2016/08/19 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
简单好用的nodejs 爬虫框架分享
2017/03/26 NodeJs
xmlplus组件设计系列之树(Tree)(9)
2017/05/02 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
js实现小时钟效果
2020/03/25 Javascript
在Python中实现贪婪排名算法的教程
2015/04/17 Python
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
Python编码爬坑指南(必看)
2016/06/10 Python
浅析python的Lambda表达式
2019/02/27 Python
Python socket模块方法实现详解
2019/11/05 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
Python绘制K线图之可视化神器pyecharts的使用
2021/03/02 Python
CSS3 text shadow字体阴影效果
2016/01/08 HTML / CSS
吃透移动端 1px的具体用法
2019/12/16 HTML / CSS
eBay比利时购物网站:eBay.be
2019/08/09 全球购物
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
电信营业员自我评价分享
2014/01/17 职场文书
培训通知书模板
2015/04/17 职场文书