Heim >Web-Frontend >js-Tutorial >Wie können wir den Abschluss des Browser-Datei-Downloads ohne Browser-Ereignisse zuverlässig erkennen?
Problembeschreibung
Für eine Seite mit einem dynamischen Datei-Download-Mechanismus ist eine visuelle Anzeige erforderlich Signal, wenn der Download abgeschlossen ist. Allerdings lösen Browser nicht immer Ereignisse aus, die den Dateiempfang anzeigen, wenn ein „Speichern“-Dialog erscheint.
Einschränkungen der Serverantwort
Die Bereitstellung einer „Content-Disposition: Der Header „Anhang“ weist Browser an, das Dialogfeld „Speichern“ anzuzeigen, unterdrückt jedoch das Laden des für das Ereignis verwendeten Iframes Überwachung.
Vorgeschlagene Lösung
Implementieren Sie eine clientbasierte Lösung unter Nutzung von JavaScript und serverseitigen Cookies:
Client-Algorithmus
Server Algorithmus
Beispiel Implementierung
var downloadToken = setFormToken(); var downloadTimer = setInterval(function() { var token = getCookie("fileDownloadToken"); if(token == downloadToken) { unblockSubmit(); } }, 1000);
// Set a cookie to unblock the submit button when download starts $this->setCookieToken("downloadToken", $_GET["downloadToken"]); $result = $this->sendFile();
Vorteile
Das obige ist der detaillierte Inhalt vonWie können wir den Abschluss des Browser-Datei-Downloads ohne Browser-Ereignisse zuverlässig erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!