信标 API
**Beacon
** API 用于向 Web 服务器发送异步且非阻塞的请求。该请求不期望响应。与使用 XMLHttpRequest
或 Fetch API 发出的请求不同,浏览器保证在页面卸载之前启动信标请求并将其运行到完成。
信标 API 的主要用例是将分析数据(例如客户端事件或会话数据)发送到服务器。从历史上看,网站已使用 XMLHttpRequest
来实现此目的,但浏览器在某些情况下不保证发送这些异步请求(例如,如果页面即将卸载)。为了解决这个问题,网站采用了各种技术,例如使请求同步,但这会对响应能力产生不良影响。由于信标请求既是异步的,又保证会被发送,因此它们兼具良好的性能特征和可靠性。
有关此 API 的动机和用法的更多详细信息,请参阅 navigator.sendBeacon()
方法的文档。
**注意:**此 API *不可用* 于 Web Workers(通过 WorkerNavigator
未公开)。
接口
此 API 定义了一个方法:navigator.sendBeacon()
。
该方法接受两个参数,即 URL 和要发送到请求中的数据。数据参数是可选的,其类型可以是字符串、ArrayBuffer
、TypedArray
、DataView
、ReadableStream
、Blob
、FormData
对象或 URLSearchParams
对象。如果浏览器成功将请求排队以进行传递,则该方法返回“true
”;否则,返回“false
”。
规范
规范 |
---|
信标 # sendbeacon-方法 |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。
另请参阅
- 信标标准
- 信标 CanIUse 数据
- 通过服务工作线程拦截信标;Ehsan Akhgari;2015 年 4 月 8 日
- https://webkit.org/blog/8821/link-click-analytics-and-privacy/
- 信标实践