监听浏览器关闭/刷新按钮,调用接口

 

 window.onunload = (e)=>{   

    _gap_time = new Date().getTime() - _beforeUnload_time;  

    if(_gap_time<=5){    

         console.log('关闭')   

         navigator.sendBeacon("/manager/api/v1/login/logout",null)   }  

     else{   

         console.log('刷新')   

         navigator.sendBeacon("/manager/api/v1/login/logout",null)   }   

         }  
    }  

 window.onbeforeunload = (e)=>{   

     _beforeUnload_time = new Date().getTime() 

 }

用户关闭或者刷新网页的时候,有时候需要调用后台接口。一般我们通过ajax或者axios等去调用接口。但是在关闭和刷新中调用你会发现console成功但是后台并没有接受到前端的请求,因为调用接口是异步的,很可能在它发送之前,页面已经卸载了,请求并没有发送出去。

浏览器引入的sendBeacon方法,发出的是异步请求,但是请求是作为浏览器任务执行的,与当前页面是脱钩的。因此该方法不会阻塞页面卸载流程和延迟后面页面的加载。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值