FileReader: loadend Ereignis

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.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Das loadend-Ereignis des FileReader-Interfaces wird ausgelöst, wenn das Lesen einer Datei abgeschlossen ist, egal ob erfolgreich oder nicht.

Dieses Ereignis kann nicht abgebrochen werden und löst keine Ereignis-Bubbling aus.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Event-Handler-Eigenschaft.

js
addEventListener("loadend", (event) => { })

onloadend = (event) => { }

Ereignistyp

Ereigniseigenschaften

Erbt auch Eigenschaften von seinem Eltern-Interface Event.

ProgressEvent.lengthComputable Schreibgeschützt

Ein boolesches Flag, das anzeigt, ob die gesamte zu erledigende Arbeit und der bereits geleistete Arbeitsaufwand des zugrunde liegenden Prozesses berechenbar sind. Mit anderen Worten, es informiert darüber, ob der Fortschritt messbar ist oder nicht.

ProgressEvent.loaded Schreibgeschützt

Ein 64-Bit-unsigned Integer-Wert, der die Menge der bereits vom zugrunde liegenden Prozess geleisteten Arbeit angibt. Das Verhältnis der erledigten Arbeit kann berechnet werden, indem der Wert dieses Attributs durch total geteilt wird. Beim Herunterladen einer Ressource über HTTP wird nur der Nachrichtentext gezählt und nicht die Header und anderer Overhead.

ProgressEvent.total Schreibgeschützt

Ein 64-Bit-unsigned Integer, der die gesamte Arbeitsmenge darstellt, die der zugrunde liegende Prozess im Begriff ist zu leisten. Beim Herunterladen einer Ressource über HTTP entspricht dies der Content-Length (der Größe des Nachrichtentextes) und enthält nicht die Header und anderen Overhead.

Beispiele

Live-Beispiel

HTML

html
<div class="example">
  <div class="file-select">
    <label for="avatar">Choose a profile picture:</label>
    <input
      type="file"
      id="avatar"
      name="avatar"
      accept="image/png, image/jpeg" />
  </div>

  <img src="" class="preview" height="200" alt="Image preview" />

  <div class="event-log">
    <label for="eventLog">Event log:</label>
    <textarea readonly class="event-log-contents" id="eventLog"></textarea>
  </div>
</div>

JavaScript

js
const fileInput = document.querySelector('input[type="file"]');
const preview = document.querySelector("img.preview");
const eventLog = document.querySelector(".event-log-contents");
const reader = new FileReader();

function handleEvent(event) {
  eventLog.textContent += `${event.type}: ${event.loaded} bytes transferred\n`;

  if (event.type === "load") {
    preview.src = reader.result;
  }
}

function addListeners(reader) {
  reader.addEventListener("loadstart", handleEvent);
  reader.addEventListener("load", handleEvent);
  reader.addEventListener("loadend", handleEvent);
  reader.addEventListener("progress", handleEvent);
  reader.addEventListener("error", handleEvent);
  reader.addEventListener("abort", handleEvent);
}

function handleSelected(e) {
  eventLog.textContent = "";
  const selectedFile = fileInput.files[0];
  if (selectedFile) {
    addListeners(reader);
    reader.readAsDataURL(selectedFile);
  }
}

fileInput.addEventListener("change", handleSelected);

Ergebnis

Spezifikationen

Specification
File API
# dfn-loadend-event
File API
# dfn-onloadend

Browser-Kompatibilität

Siehe auch