


Erkennen des Abschlusses des Browser-Datei-Downloads
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
- Generieren Sie ein eindeutiges Token.
- Senden Sie das Download-Anfrage mit dem Token.
- Zeigen Sie den „Warten“-Indikator an.
- Fragen Sie den Server in regelmäßigen Abständen nach einem Cookie mit dem Namen „fileDownloadToken“ ab, das mit dem Token übereinstimmt.
- Wenn Wenn das Cookie gefunden wird, entfernen Sie den „Warten“-Indikator.
Server Algorithmus
- Extrahieren Sie das Token aus der Anfrage.
- Erstellen Sie ein Cookie mit dem Namen „fileDownloadToken“ und setzen Sie seinen Wert auf das empfangene Token.
Beispiel Implementierung
- Clientseitiges JavaScript (vereinfacht)
var downloadToken = setFormToken(); var downloadTimer = setInterval(function() { var token = getCookie("fileDownloadToken"); if(token == downloadToken) { unblockSubmit(); } }, 1000);
- Serverseitiges PHP (vereinfacht)
// Set a cookie to unblock the submit button when download starts $this->setCookieToken("downloadToken", $_GET["downloadToken"]); $result = $this->sendFile();
Vorteile
- Erfordert keine temporäre Dateierstellung.
- Erkennt die Downloadbereitschaft von Dateien, ohne sich darauf verlassen zu müssen auf Ereignis-Listenern.
- Kann an bestimmte Token-Namen und Cookies angepasst werden Einstellungen.
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!

Detaillierte Erläuterung der Methode für JavaScript -Zeichenfolge und FAQ In diesem Artikel werden zwei Möglichkeiten untersucht, wie String -Zeichen in JavaScript ersetzt werden: Interner JavaScript -Code und interne HTML für Webseiten. Ersetzen Sie die Zeichenfolge im JavaScript -Code Die direkteste Möglichkeit ist die Verwendung der Ersatz () -Methode: str = str.replace ("find", "ersetzen"); Diese Methode ersetzt nur die erste Übereinstimmung. Um alle Übereinstimmungen zu ersetzen, verwenden Sie einen regulären Ausdruck und fügen Sie das globale Flag G hinzu:: STR = Str.Replace (/fi

Dieses Tutorial zeigt Ihnen, wie Sie eine benutzerdefinierte Google -Such -API in Ihr Blog oder Ihre Website integrieren und ein raffinierteres Sucherlebnis bieten als Standard -WordPress -Themen -Suchfunktionen. Es ist überraschend einfach! Sie können die Suche auf y beschränken

Nutzen Sie JQuery für mühelose Webseiten -Layouts: 8 Essential Plugins JQuery vereinfacht das Webseitenlayout erheblich. In diesem Artikel werden acht leistungsstarke JQuery -Plugins hervorgehoben, die den Prozess optimieren, insbesondere nützlich für die manuelle Website -Erstellung

Hier sind Sie also bereit, alles über dieses Ding namens Ajax zu lernen. Aber was genau ist das? Der Begriff AJAX bezieht sich auf eine lose Gruppierung von Technologien, mit denen dynamische, interaktive Webinhalte erstellt werden. Der Begriff Ajax, ursprünglich von Jesse J geprägt

Kernpunkte Dies in JavaScript bezieht sich normalerweise auf ein Objekt, das die Methode "besitzt", aber es hängt davon ab, wie die Funktion aufgerufen wird. Wenn es kein aktuelles Objekt gibt, bezieht sich dies auf das globale Objekt. In einem Webbrowser wird es durch Fenster dargestellt. Wenn Sie eine Funktion aufrufen, wird das globale Objekt beibehalten. Sie können den Kontext mithilfe von Methoden wie CALL (), Apply () und Bind () ändern. Diese Methoden rufen die Funktion mit dem angegebenen Wert und den Parametern auf. JavaScript ist eine hervorragende Programmiersprache. Vor ein paar Jahren war dieser Satz

Dieser Beitrag erstellt hilfreiche Cheat -Blätter, Referenzführer, schnelle Rezepte und Code -Snippets für die Entwicklung von Android-, Blackberry und iPhone -App. Kein Entwickler sollte ohne sie sein! Touch Gesten -Referenzhandbuch (PDF) Eine wertvolle Ressource für Desig

JQuery ist ein großartiges JavaScript -Framework. Wie in jeder Bibliothek ist es jedoch manchmal notwendig, unter die Motorhaube zu gehen, um herauszufinden, was los ist. Vielleicht liegt es daran, dass Sie einen Fehler verfolgen oder nur neugierig darauf sind, wie JQuery eine bestimmte Benutzeroberfläche erreicht

In Artikel werden JavaScript -Bibliotheken erstellt, veröffentlicht und aufrechterhalten und konzentriert sich auf Planung, Entwicklung, Testen, Dokumentation und Werbestrategien.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

Dreamweaver CS6
Visuelle Webentwicklungstools

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool
