1. 简介
Beacon API 允许开发者发送少量错误分析和上报的信息。
不过Beacon API是W3C仍在草案阶段的一项新API。
特点:
a. 在浏览器空闲的时异步发送数据,不影响页面的其他加载,例如JS、CSS动画等的执行;
b. 页面在unload状态下,也会异步发送统计,不影响页面过渡/跳转到下跳页;
c. 能够被客户端优化发送,尤其在 Mobile 环境下,可以将 Beacon 请求合并到其他请求上,一同处理;
2. 用法
sendBeacon 函数是挂载在 navigator对象上1
2
3
4
5window.addEventListener('unload', logData, false);
function logData() {
navigator.sendBeacon(url, data);
}
上面代码表示当页面unload的时候会异步发送一个请求,将数据发送到服务端。
使用细节:
a. sendBeacon第一个参数为url;
b. sendBeacon只能用POST方法来发送信息;
c. sendBeacon的第二个参数是可选的,如果提供的话,参数类型可以是ArrayBufferView、Blob、DOMString或者FormData;
d. sendBeacon所收到的HTTP回应会被无视。实际上即使不无视你也不见得能拿到回应,因为整个请求发送或者收到回应的时候,页面可能早就不存在了;
e. sendBeacon是有返回值的,类型为bool:true表示浏览器已经将这个请求纳入队列稍后处理,false表示浏览器无法完成这个请求,通常来说就是浏览器的HTTP请求队列已满;