Ich versuche eine Netzwerkanforderung zu stellen, wenn ein Benutzer seinen Browser oder seinen Registerkarte schließt. Wenn Sie hier auf Stackoverflow suchen, finden Sie eine Methode, die vorab oder window.onbeforeUpLoad verwendet wird. Wenn Sie von Ihrem OnbeforeUnLoad -Callback und Dialog angezeigt werden, wird kein Dialog angezeigt, und Ihr Code wird ausgeführt. Benutzer, ob sie die Seite verlassen. Wenn ein Benutzer beispielsweise ein langes Formular ausgefüllt hat und Sie mit ihm bestätigen möchten, dass er nicht den Unfall geschlossen hat. /Code> Da es keine Garantie dafür gibt, dass die Anfrage abgeschlossen ist. Es war anscheinend nicht darauf ausgelegt, Anfragen auszuführen. Ich habe viele solcher Antworten gefunden, die Personen von onbeforeUnload und stattdessen auf navigator.sendBeakon :
Der Browser -API -Navigator: sendbeacon war Für diesen Zweck entworfen. sendBeacon akzeptiert einen URL und einen optionalen Daten Parameter, auf den sie veröffentlichen wird. Es gibt keine Optionen, um eine andere HTTP -Methode wie GET oder Löschen zu verwenden, noch akzeptiert sie einen Rückruf, bei dem Sie die Fetch -API verwenden können. Sie sind nur darauf beschränkt, Daten zu veröffentlichen. /> Hinweis: Für Anwendungsfälle, die die Möglichkeit erfordern, Anforderungen mit anderen Methoden als Post zu senden, oder alle Anforderungseigenschaften ändern oder Zugriff auf die Serverantwort benötigen, verwenden Sie stattdessen die Fetch () -Methode mit Keepalive Set auf true. : True ? Was sollte verwendet werden? Wenn ich eine Nicht-Postanforderung stellen muss, Header festlegen oder auf die Antwort der Anforderung zugreifen muss, ist Keepalive: True mit einem Fetch genug? Es wird nicht empfohlen, dieses Ereignis für etwas anderes zu verwenden, als zu verhindern, dass ein Benutzer Daten verliert. Wenn nicht vor dem Laden, wie können Sie eine nicht postnetzige Netzwerkanforderung zuverlässig stellen, wenn ein Benutzer eine Browser-Registerkarte schließt?
Ich weiß, dass es robustere Wege gibt Dies mit WebSockets zu erkennen, aber wie hoch ist die nur Kunden-Methode, die mindestens so gut funktioniert, wie sendBeacon?
Navigator.SendBeacon gegen Fetch Keepalive: Zuverlässigkeit nach Browser oder Registerkarte Schließen ⇐ JavaScript
-
- Similar Topics
- Replies
- Views
- Last post