ProgressEvent
Baseline
Weitgehend verfügbar
*
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die ProgressEvent Schnittstelle repräsentiert Ereignisse, die den Fortschritt eines zugrunde liegenden Prozesses messen, wie z.B. eine HTTP-Anfrage (z.B. ein XMLHttpRequest oder das Laden der zugrunde liegenden Ressource eines <img>, <audio>, <video>, <style> oder <link>).
Konstruktor
ProgressEvent()-
Erstellt ein
ProgressEventEreignis mit den angegebenen Parametern.
Instanz-Eigenschaften
Erbt auch Eigenschaften von seinem Elternteil Event.
ProgressEvent.lengthComputableSchreibgeschützt-
Ein booleanisches Flag, das anzeigt, ob das Verhältnis zwischen der bereits übertragenen oder verarbeiteten Datenmenge (
loaded) und der Gesamtdatenmenge (total) berechenbar ist. Mit anderen Worten, es zeigt an, ob der Fortschritt messbar ist oder nicht. ProgressEvent.loadedSchreibgeschützt-
Eine Zahl, die die Größe der bereits übertragenen oder verarbeiteten Daten angibt. Bei einem vom Browser in HTTP-Nachrichten ausgelösten
ProgressEventbezieht sich der Wert auf die Größe des Nachrichtenkörpers in Bytes, exklusive Header und anderer Overhead. In komprimierten Nachrichten unbekannter Gesamtgröße kannloadedsich auf die Größe der komprimierten oder unkomprimierten Daten beziehen, abhängig vom Browser. Ab 2024 enthält er die Größe der komprimierten Daten in Firefox und die unkomprimierten Daten in Chrome. In einem selbst erstelltenProgressEventkönnen Sie jedem numerischen Wert fürloadedzuweisen, der die Menge der im Verhältnis zutotalabgeschlossenen Arbeit repräsentiert. ProgressEvent.totalSchreibgeschützt-
Eine Zahl, die die Gesamtgröße der Daten angibt, die übertragen oder verarbeitet werden. Bei vom Browser in HTTP-Nachrichten ausgelösten
ProgressEvents bezieht sich der Wert auf die Größe einer Ressource in Bytes und wird aus demContent-Length-Header abgeleitet. In einem selbst erstelltenProgressEventkönnten Sietotalauf einen Wert wie100oder1normalisieren, wenn das Offenlegen der genauen Anzahl von Bytes einer Ressource ein Problem darstellt. Wenn Sie beispielsweise1als Gesamtwert verwenden, würdeloadedeinen Dezimalwert zwischen0und1haben.
Instanz-Methoden
Erbt Methoden von seinem Elternteil, Event.
Beispiele
>Den Status einer Anfrage anzeigen
Das folgende Beispiel fügt einem neuen XMLHttpRequest ein ProgressEvent hinzu und verwendet es, um den Status der Anfrage anzuzeigen.
const progressBar = document.getElementById("p"),
client = new XMLHttpRequest();
client.open("GET", "magical-unicorns");
client.onprogress = (pe) => {
if (pe.lengthComputable) {
progressBar.max = pe.total;
progressBar.value = pe.loaded;
}
};
client.onloadend = (pe) => {
progressBar.value = pe.loaded;
};
client.send();
Verwendung von Bruchteilen in einem ProgressEvent
Die Gesamtzahl der Bytes einer Ressource kann zu viele Informationen über eine Ressource preisgeben, daher kann stattdessen eine Zahl zwischen 0 und 1 in einem ProgressEvent() verwendet werden:
function updateProgress(loaded, total) {
const progressEvent = new ProgressEvent("progress", {
lengthComputable: true,
loaded,
total,
});
document.dispatchEvent(progressEvent);
}
document.addEventListener("progress", (event) => {
console.log(`Progress: ${event.loaded}/${event.total}`);
});
updateProgress(0.123456, 1);
Spezifikationen
| Spezifikation |
|---|
| XMLHttpRequest> # interface-progressevent> |
Browser-Kompatibilität
Siehe auch
- Die
EventBasisschnittstelle.