关闭页面向后台发送消息

简介: 关闭页面向后台发送消息

场景描述


场景描述:在用户刷新页面或者关闭页面的时候,前端要给后台发一条请求,释放该页面的授权占用。


最初的代码


window.addEventListener("beforeunload", () => {
let oReq = new XMLHttpRequest();
oReq.open("POST", "http://127.0.0.1:8080/exit");
oReq.send(JSON.stringify({name: "南风晚来晚相识"}));


经过测试


刷新页面时基本满足需求(偶尔也会有后台接收不到请求的现象,但概率很低)

关闭页面时,后台接收不到请求


哦豁,尴尬了


navigator.sendBeacon()


navigator.sendBeacon()  这个方法主要用于满足统计和,


这些代码通常尝试在卸载(unload)文档之前向web服务器发送数据


使用方式: navigator.sendBeacon(url, data);


说明:


url 参数表明 data 将要被发送到的网络地址。


data 参数是将要发送的 ArrayBufferView 或 Blob 、DOMString 或者 FormData 类型的数


返回值


当用户代理成功把数据加入传输队列时,sendBeacon() 方法将会返回 true,否则返回 false


使用navigator.sendBeacon()


window.addEventListener("beforeunload", (e) => {
    const data = {name: "南风晚来晚相识"};
    window.navigator.sendBeacon("http://127.0.0.1:8080/exit", JSON.stringify(data));
});


相关文章
|
JavaScript
js 使用fetch来上传文件 formdata()
js 使用fetch来上传文件 formdata()
|
1月前
|
前端开发 JavaScript API
js实现promise常用场景使用示例
本文介绍JavaScript中Promise的6种常用场景:异步请求、定时器封装、并行执行、竞速操作、任务队列及与async/await结合使用,通过实用示例展示如何优雅处理异步逻辑,避免回调地狱,提升代码可读性与维护性。
214 10
|
JSON JavaScript 前端开发
震惊!JS如何悄无声息追踪你的每一步?揭秘页面访问与关闭的超级上报大法,让数据说话,优化体验不再难!
【8月更文挑战第4天】在Web开发中,跟踪用户行为对提升体验与留存至关重要。本文以在线学习平台为例,介绍如何用JavaScript监听页面访问及关闭,并上报数据。通过`window.onload`监测页面加载,记录用户访问;利用`navigator.sendBeacon`在用户离开时发送少量数据至服务器,无需担心请求失败。需注意隐私合规、性能影响及浏览器兼容性。此技术有助于深入理解用户行为,为产品迭代提供依据。
417 8
|
SQL 存储 数据挖掘
SQL Server 日期格式查询详解
SQL Server 日期格式查询详解
935 2
|
移动开发 API UED
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
3245 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
JSON JavaScript 前端开发
Unexpected token u in JSON at position 0
这篇文章解释了JavaScript中"Unexpected token u in JSON at position 0"错误的常见原因,通常是由于尝试解析undefined变量导致的,并建议检查是否有变量在JSON.parse()执行时未赋值或值为undefined。
Unexpected token u in JSON at position 0
|
前端开发 JavaScript 程序员
avue中怎样隐藏新增和编辑的按钮
avue中怎样隐藏新增和编辑的按钮
|
存储 监控 安全
阿里云携手庆视互联数据迁云,助力全球业务升级
智能家居数据迁云,守护千万家庭安全
|
JavaScript
js【详解】arr.reduce() 数组缩减
js【详解】arr.reduce() 数组缩减
119 0