利用 sendBeacon 发送统计信息

时间:2021-11-20 06:58:54

我们经常会在网站追踪用户的信息,比如记录用户的停留时间。

window.addEventListener("unload", () => {
  
 // sendHTTP
});

  但是如果发送是XHR请求的话。页面会阻塞。google了发现有一个api是可以支持的

大致是说 navigator.sendBeacon 可以用来发送一些小量的数据,特别适合统计场景,且这个请求是异步的,不受浏览器行为限制:即使浏览器关闭请求也能照样发出。

var data = new FormData();
navigator.sendBeacon(‘path/to/beacon‘, data);

  

window.addEventListener("unload", () => {
    let data = new FormData();
    data.append("type", "event");
    data.append("start_time", start);
    data.append("end_time", getTimestamp());
    data.append("url", currentUrl);
    navigator.sendBeacon("/visit.php", data);
  });