ProgressEvent
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 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.lengthComputable
Schreibgeschü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.loaded
Schreibgeschü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 sichloaded
auf 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 erstelltenProgressEvent
können Sieloaded
einen beliebigen numerischen Wert zuweisen, der den Fortschritt relativ zumtotal
-Wert repräsentiert. ProgressEvent.total
Schreibgeschü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 erstelltenProgressEvent
könnten Sietotal
auf einen Wert wie100
oder1
normieren, falls die exakte Anzahl der Bytes einer Ressource nicht offengelegt werden soll. Wenn Sie zum Beispiel1
als Gesamtwert verwenden, würdeloaded
einen dezimalen Wert zwischen0
und1
annehmen.
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
Siehe auch
- Die
Event
Basisschnittstelle.