vue 监听页面刷新或关闭

参考:https://blog.csdn.net/weixin_43915587/article/details/93628935

发现 beforeDestroy 只能监听到页面间的跳转,无法监听到页面刷新和关闭标签页。所以还是要借助 onbeforeunload 事件。

顺便复习了一下 JavaScript 中的一些加载,卸载事件:
页面加载时只执行 onload 事件。
页面关闭时,先 onbeforeunload 事件,再 onunload 事件。
页面刷新时先执行 onbeforeunload事件,然后 onunload 事件,最后 onload 事件。

注意:用window监听的事件,在页面销毁前记得移除;否则切换路由后,依然在监听

//自己测试
 created() {
   window.addEventListener('beforeunload', e => this.beforeunloadFn(e))
 },
 
 destroyed() {
   window.removeEventListener('beforeunload', e => this.beforeunloadFn(e))
 },
 
  methods: {
    beforeunloadFn(e) {
      console.log(e, '刷新或关闭');
      this.finalCart()
    },
    finalCart() {
    	//调接口
	}
  }

有的同学说监听不到刷新,其实仔细观察会发现控制台打印了“刷新或关闭”,只是很快页面就刷新了,所以看不到,但是beforeunloadFn函数是会执行的

//参考原文
created() {
  this.initCart()
  window.addEventListener('beforeunload', this.updateHandler)
},
beforeDestroy() {
  this.finalCart() // 提交购物车的异步操作},
destroyed() {
  window.removeEventListener('beforeunload', this.updateHandler)},
methods: {
  updateHandler() {
    this.finalCart()
  },
  finalCart() {
    // ...
  }
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值