W3C 工作组也想到了这个问题,提出了 Beacon API的 草案。
Beacon API 允许开发者发送少量错误分析和上报的信息,它的特点很明显:
- 在空闲的时候异步发送统计,不影响页面诸如 JS、CSS Animation 等执行
- 即使页面在 unload 状态下,也会异步发送统计,不影响页面过渡/跳转到下跳页
- 能够被客户端优化发送,尤其在 Mobile 环境下,可以将 Beacon 请求合并到其他请求上,一同处理
sendBeacon 函数挂在在 navigator 上,在 unload 之前,这个函数一定是被初始化了的。其使用方式为:
window.addEventListener('unload', function(event) {
navigator.sendBeacon('/collector', data);
});
navigator.sendBeacon(url, data); 第一个参数为数据上报的地址,第二个参数为要发送的数据,支持的数据格式有:ArrayBufferView, Blob, DOMString, 和 FormData。
Beacon还有一个非常实用的移动端使用场景,当用户从浏览器切换到其他 app 界面或者 Home 屏的时候,部分浏览器默认会停止页面脚本的执行,如果在这个时候使用了 unload 时间,可能会让你失望,因为 unload 事件并不会触发,此时,Beacon就派上用途了,它是不会受影响的。
文章摘自:云栖社区
网友评论