Beacon API

Baseline 已广泛支持

此功能已成熟,可跨多种设备和浏览器版本工作。它自 ⁨2018 年 4 月⁩ 起已在所有浏览器中可用。

Beacon API 用于向 Web 服务器发送异步且非阻塞的请求。该请求不期望得到响应。与使用 XMLHttpRequestFetch API 发出的请求不同,浏览器保证在页面卸载之前发起信标请求,并确保其完成。

Beacon API 的主要用例是将客户端事件或会话数据等分析信息发送到服务器。过去,网站一直使用 XMLHttpRequest 来实现此目的,但在某些情况下(例如,当页面即将卸载时),浏览器并不保证会发送这些异步请求。为了解决这个问题,网站不得不采用各种技术,例如使请求同步,这会严重影响响应速度。由于信标请求既是异步的又是保证发送的,因此它们结合了良好的性能特征和可靠性。

有关此 API 的动机和用法的更多详细信息,请参阅 navigator.sendBeacon() 方法的文档。

注意: 此 API 在 Web Workers不可用(未通过 WorkerNavigator 暴露)。

接口

此 API 定义了一个单一方法:navigator.sendBeacon()

该方法接受两个参数:URL 和要发送到请求中的数据。数据参数是可选的,其类型可以是字符串、ArrayBufferTypedArrayDataViewReadableStreamBlobFormData 对象或 URLSearchParams 对象。如果浏览器成功将请求加入队列以进行传输,则该方法返回 true;否则,它返回 false

规范

规范
Beacon
# sendbeacon-method

浏览器兼容性

另见