Główne logo strony
JavaScript

Wysyłanie "requestu" przy zamykaniu karty


Czasami trzeba wysłać dane na serwer, nawet jeśli użytkownik zamyka stronę. Wykorzystanie zdarzeń unload i beforeunload jest problematyczne, bo przeglądarki mogą nie wysyłać asynchronicznych żądań w tych momentach. Lepiej użyć Navigator.sendBeacon() [docs], który wysyła dane asynchronicznie i niezawodnie.

Oto przykład z visibilitychange:

document.addEventListener("visibilitychange", () => {
  if (document.visibilityState === "hidden") {
    navigator.sendBeacon("/log", new URLSearchParams({ event: "pagehide" }));
  }
});

MetodasendBeacon gwarantuje wysyłkę danych bez opóźnień, nawet przy zamykaniu kart.

Przeczytaj więcej na ten temat tutaj.

Losowy shortKolejny short: JavaScript