ProgressEvent
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
* Some parts of this feature may have varying levels of support.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die ProgressEvent-Schnittstelle repräsentiert Ereignisse, die den Fortschritt eines zugrundeliegenden Prozesses messen, wie zum Beispiel eine HTTP-Anfrage (z.B. ein XMLHttpRequest oder das Laden der zugrundeliegenden Ressource eines <img>, <audio>, <video>, <style> oder <link>).
Konstruktor
ProgressEvent()-
Erstellt ein
ProgressEvent-Ereignis mit den angegebenen Parametern.
Instanz-Eigenschaften
Erbt auch Eigenschaften von seinem Elternobjekt Event.
ProgressEvent.lengthComputableSchreibgeschützt-
Ein boolesches Flag, das angibt, ob das Verhältnis zwischen der Größe der bereits übertragenen oder verarbeiteten Daten (
loaded) und der Gesamtgröße der Daten (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
ProgressEvent, das vom Browser in HTTP-Nachrichten ausgelöst wird, bezieht sich der Wert auf die Größe des Nachrichtenkörpers in Bytes, exklusive Header und andere Overheads. Bei komprimierten Nachrichten mit unbekannter Gesamtgröße könnte sichloadedauf die Größe der komprimierten oder unkomprimierten Daten beziehen, je nach Browser. Ab 2024 enthält es die Größe der komprimierten Daten in Firefox und der unkomprimierten Daten in Chrome. Bei einem selbst erstelltenProgressEventkönnen Sieloadedeinen beliebigen numerischen Wert zuweisen, der den Fortschritt relativ zumtotal-Wert repräsentiert. ProgressEvent.totalSchreibgeschützt-
Eine Zahl, die die Gesamtgröße der zu übertragenden oder zu verarbeitenden Daten angibt. Bei
ProgressEvent, die vom Browser in HTTP-Nachrichten ausgelöst werden, bezieht sich der Wert auf die Größe einer Ressource in Bytes und leitet sich aus demContent-Length-Header ab. Bei einem selbst erstelltenProgressEventkönnten Sietotalauf einen Wert wie100oder1normieren, falls die exakte Anzahl der Bytes einer Ressource nicht offengelegt werden soll. Wenn Sie zum Beispiel1als Gesamtwert verwenden, würdeloadedeinen dezimalen Wert zwischen0und1annehmen.
Instanz-Methoden
Erbt Methoden von seinem Elternobjekt, Event.
Beispiele
>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 Gesamtanzahl der Bytes einer Ressource könnte 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
| Specification |
|---|
| XMLHttpRequest> # interface-progressevent> |
Browser-Kompatibilität
Loading…
Siehe auch
- Die
EventBasisschnittstelle.