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.