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 相关文章推荐
通过JAVASCRIPT读取ASP设定的COOKIE
Nov 24 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
Nov 21 Javascript
javascript页面倒计时实例
Jul 25 Javascript
详解JavaScript对象序列化
Jan 19 Javascript
全面了解JS中的匿名函数
Jun 29 Javascript
原生js实现新闻列表展开/收起全文功能
Jan 20 Javascript
使用node.js搭建服务器
May 20 Javascript
AngularJS路由Ui-router模块用法示例
May 29 Javascript
在vue中,v-for的索引index在html中的使用方法
Mar 06 Javascript
vue项目中实现图片预览的公用组件功能
Oct 26 Javascript
基于vue实现web端超大数据量表格的卡顿解决
Apr 02 Javascript
javascript贪吃蛇游戏设计与实现
Sep 17 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+mysql分页代码详解
2008/03/27 PHP
php中的数组操作函数整理
2008/08/18 PHP
通俗易懂的php防注入代码
2010/04/07 PHP
基于wordpress主题制作的具体实现步骤
2013/05/10 PHP
php命令行使用方法和命令行参数说明
2014/04/08 PHP
PHP实现的装箱算法示例
2018/06/23 PHP
js几个验证函数代码
2010/03/25 Javascript
原生JS实现加入收藏夹的代码
2013/10/24 Javascript
通过javascript把图片转化为字符画
2013/10/24 Javascript
JavaScript中的全局对象介绍
2015/01/01 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
使用async-validator编写Form组件的方法
2018/01/10 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
js实现弹出框的拖拽效果实例代码详解
2019/04/16 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
vue中watch和computed的区别与使用方法
2020/08/23 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
2020/10/19 Javascript
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
python简单实现获取当前时间
2016/08/27 Python
Python中最大最小赋值小技巧(分享)
2017/12/23 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
python 实用工具状态机transitions
2020/11/21 Python
银行求职信范文
2014/05/26 职场文书
高中国旗下的演讲稿
2014/08/28 职场文书
公务员党员评议表自我鉴定
2014/09/14 职场文书
学习党章的体会
2014/11/07 职场文书
2016年元旦寄语
2015/08/17 职场文书
远程教育培训心得体会
2016/01/09 职场文书
XX部保密工作制度范本
2019/08/27 职场文书
《现实主义勇者的王国再建记》第三弹OST全曲试听片段公开
2022/04/04 日漫