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 相关文章推荐
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
Jul 31 Javascript
JS提交form表单实例分析
Dec 10 Javascript
Angularjs处理页面闪烁的解决方法
Mar 09 Javascript
JavaScript实现三级联动菜单效果
Aug 16 Javascript
用vue封装插件并发布到npm的方法步骤
Oct 18 Javascript
js中apply与call简单用法详解
Nov 06 Javascript
checkbox在vue中的用法小结
Nov 13 Javascript
微信小程序自定义导航栏实例代码
Apr 05 Javascript
iview的table组件自带的过滤器实现
Jul 12 Javascript
js设计模式之代理模式及订阅发布模式实例详解
Aug 15 Javascript
微信小程序 自定义复选框实现代码实例
Sep 04 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
Nov 17 Vue.js
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 curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
php array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
提取jquery的ready()方法单独使用示例
2014/03/25 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
jQuery进行组件开发完整实例
2015/12/15 Javascript
JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
2016/08/03 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
JavaScript Date 知识浅析
2017/01/29 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
2018/01/31 jQuery
vue实现简单的日历效果
2020/09/24 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
vue 解决form表单提交但不跳转页面的问题
2019/10/30 Javascript
js实现烟花特效
2020/03/02 Javascript
原生js无缝轮播插件使用详解
2020/03/09 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
Python入门篇之文件
2014/10/20 Python
python实现查询IP地址所在地
2015/03/29 Python
浅谈django中的认证与登录
2016/10/31 Python
详解Python list 与 NumPy.ndarry 切片之间的对比
2017/07/24 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
2018/02/18 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
python 如何设置守护进程
2020/10/29 Python
css3 按钮样式简单可扩展创建
2013/03/18 HTML / CSS
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
香蕉共和国工厂店:Banana Republic Factory
2018/06/09 全球购物
低碳环保演讲稿
2014/08/28 职场文书
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS