Beacon API
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since abril de 2018.
A Beacon API é usada para enviar um request assíncrono e não bloqueante para um servidor web. O request não espera por uma resposta. Ao contrário de requests feitos utilizando XMLHttpRequest ou Fetch, o navegador garante que irá iniciar e aguardar a conclusão do request antes da página ser desmontada.
O principal caso de uso da Beacon API é enviar dados de análise, como eventos do lado do cliente ou dados da sessão para o servidor. Historicamente, os sites costumavam usar XMLHttpRequest para isso, mas os navegadores não garantem o envio de solicitações assíncronas em algumas circunstâncias (por exemplo, se a página vai ser desmontada). Para evitar esses problemas, os sites usam diversas técnicas, como enviar o request síncrono, mas isso tem um efeito colateral ruim na responsividade. Como beacon requests são assíncronos quanto garantidas de serem enviados, elas combinam desempenho e confiabilidade.
Para mais detalhes sobre a motivação e uso dessa API, veja a documentação sobre o método navigator.sendBeacon()
Nota:
essa API não está disponível nos Web Workers (não é exposta através do WorkerNavigator).
Interface
Essa API define apenas um método: navigator.sendBeacon().
O método recebe dois argumentos, a URL e os dados que serão enviados no request. Os dados são opcionais e seu tipo pode ser um TypedArray, DataView, Blob, uma string ou objeto, ou um objeto FormData. Se o navegador colocar na fila o request para ser executado com sucesso o método retornará true; se não retornará false.
Especificações
| Specification |
|---|
| Beacon> # sendbeacon-method> |
Compatibilidade com navegadores
Loading…