ProgressEvent: ProgressEvent()-Konstruktor
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2016.
* Some parts of this feature may have varying levels of support.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Der ProgressEvent()
-Konstruktor gibt ein neues ProgressEvent
-Objekt zurück, das den aktuellen Abschluss eines langen Prozesses darstellt.
Syntax
new ProgressEvent(type)
new ProgressEvent(type, options)
Parameter
type
-
Ein String mit dem Namen des Ereignisses. Es ist case-sensitiv und Browser setzen es auf
loadstart
,progress
,abort
,error
,load
,timeout
oderloadend
. options
Optional-
Ein Objekt, das zusätzlich zu den in
Event()
definierten Eigenschaften die folgenden Eigenschaften haben kann:lengthComputable
Optional-
Ein boolescher Wert, der angibt, ob die Gesamtarbeit, die zu erledigen ist, und die Menge der bereits erledigten Arbeit durch den zugrunde liegenden Prozess berechenbar sind. Mit anderen Worten, es wird angegeben, ob der Fortschritt messbar ist oder nicht. Standardmäßig
false
. loaded
Optional-
Eine Zahl, die die Menge der bereits durch den zugrunde liegenden Prozess geleisteten Arbeit darstellt. Bei einem
ProgressEvent
, das vom Browser in HTTP-Nachrichten ausgelöst wird, bezieht sich der Wert auf die Größe der Nachricht, in Bytes, abzüglich der Header und anderer Overhead-Kosten. In einemProgressEvent
, das Sie selbst erstellen, können Sieloaded
jeden numerischen Wert zuweisen, der die erledigte Arbeit relativ zumtotal
-Wert darstellt. Standardmäßig0
. total
Optional-
Eine Zahl, die die Gesamtgröße der Daten angibt, die übertragen oder verarbeitet werden. Bei
ProgressEvent
s, die vom Browser in HTTP-Nachrichten ausgelöst werden, bezieht sich der Wert auf die Größe einer Ressource in Bytes und wird aus demContent-Length
-Antwort-Header abgeleitet. In einemProgressEvent
, das Sie selbst erstellen, möchten Sie vielleichttotal
auf einen Wert wie100
oder1
normalisieren, wenn die genaue Anzahl von Bytes einer Ressource ein Anliegen ist. Wenn Sie beispielsweise1
als Gesamtwert verwenden, sollteloaded
ein Dezimalwert zwischen0
und1
sein. Standardmäßig0
.
Rückgabewert
Ein neues ProgressEvent
-Objekt.
Beispiel
Datei-Upload
Das Beispiel zeigt, wie ein ProgressEvent
mithilfe eines Konstruktors erstellt wird. Dies ist besonders nützlich, um den Fortschritt von Prozessen wie Datei-Uploads, Downloads oder anderen lang andauernden Aufgaben zu verfolgen.
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(50, 100);
Verwendung von Brüchen in einem ProgressEvent
Die Gesamtanzahl der Bytes einer Ressource kann zu viele Informationen über einen Download preisgeben, daher kann stattdessen eine Zahl zwischen 0 und 1 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 # dom-progressevent-progressevent |
Browser-Kompatibilität
Siehe auch
- Das
ProgressEvent
-Interface, zu dem es gehört.