关闭/刷新浏览器,刷新页面发送请求解决方案

目录

需求背景:

踩坑记录:

最终方案:


需求背景:

记录登录时长,退出/异常退出的时候请求退出接口,完成退出标记,后端统计时长。

踩坑记录:

  • 在onbeforeunload时机进行发送请求, 后加了关闭浏览器提醒弹窗(可取消关闭)功能, 导致此时机请求是不对的。
  • 在onunload时机请求,关闭/刷新 浏览器操作时 发送的ajax会被浏览器取消掉,不会发出或者发送失败。
  • 网上查找使用ajax同步,实践也会被取消掉不会发出请求。

最终方案:navigator.sendBeacon

navigator.sendBeacon(url, data)。使用blob方法传对象格式参数给后端。(请求记录可使用抓包工具查看, 浏览器network看不到)

此方法是无阻塞请求,不会影响页面的交互卡顿

window.onunload = () => {
        const data = { cno: 222 }
        const blob = new Blob([ JSON.stringify(data) ], {
            type: 'application/json; charset=UTF-8',
        })
        navigator.sendBeacon(url, blob)
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值