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 April 2018.
Die Beacon
API wird verwendet, um eine asynchrone und nicht blockierende Anfrage an einen Webserver zu senden. Die Anfrage erwartet keine Antwort. Im Gegensatz zu Anfragen, die mit XMLHttpRequest
oder der Fetch API gemacht werden, garantiert der Browser, dass Beacon-Anfragen initiiert werden, bevor die Seite entladen wird, und dass sie vollständig ausgeführt werden.
Der Hauptanwendungsfall für die Beacon API besteht darin, Analysen wie clientseitige Ereignisse oder Sitzungsdaten an den Server zu senden. Historisch haben Websites dafür XMLHttpRequest
verwendet, aber Browser garantieren nicht, dass diese asynchronen Anfragen in einigen Fällen gesendet werden (zum Beispiel, wenn die Seite gerade entladen wird). Um dem entgegenzuwirken, haben Websites auf verschiedene Techniken zurückgegriffen, wie das Synchronisieren der Anfrage, was sich negativ auf die Reaktionsfähigkeit auswirkt. Da Beacon-Anfragen sowohl asynchron sind als auch garantiert gesendet werden, kombinieren sie gute Leistungseigenschaften und Zuverlässigkeit.
Für weitere Informationen über die Motivation und Nutzung dieser API siehe die Dokumentation zur navigator.sendBeacon()
Methode.
Hinweis: Diese API ist nicht verfügbar in Web Workers (nicht verfügbar über WorkerNavigator
).
Schnittstellen
Diese API definiert eine einzelne Methode: navigator.sendBeacon()
.
Die Methode nimmt zwei Argumente, die URL und die Daten, die in der Anfrage gesendet werden sollen. Das Datenargument ist optional, und sein Typ kann ein String, ein ArrayBuffer
, ein TypedArray
, ein DataView
, ein ReadableStream
, ein Blob
, ein FormData
-Objekt oder ein URLSearchParams
-Objekt sein. Wenn der Browser die Anfrage erfolgreich zur Lieferung in die Warteschlange stellt, gibt die Methode true
zurück; andernfalls false
.
Spezifikationen
Specification |
---|
Beacon # sendbeacon-method |
Browser-Kompatibilität
BCD tables only load in the browser