Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

XMLHttpRequestEventTarget : évènement loadend

Baseline
Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.

Note : Cette fonctionnalité est disponible via les Web Workers, sauf pour les Service Workers.

L'évènement loadend est déclenché lorsqu'une requête est terminée, que ce soit avec succès (après load) ou en échec (après abort ou error).

Syntaxe

Utilisez le nom de l'évènement dans des méthodes comme addEventListener(), ou définissez une propriété de gestionnaire d'évènement.

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

onloadend = (event) => { }

Type d'évènement

Un objet ProgressEvent. Hérite de Event.

Event ProgressEvent

Exemples

Utiliser XMLHttpRequest

HTML

html
<div class="controls">
  <input
    class="xhr success"
    type="button"
    name="xhr"
    value="Cliquez pour démarrer XHR (succès)" />
  <input
    class="xhr error"
    type="button"
    name="xhr"
    value="Cliquez pour démarrer XHR (erreur)" />
  <input
    class="xhr abort"
    type="button"
    name="xhr"
    value="Cliquez pour démarrer XHR (annulation)" />
</div>

<textarea readonly class="event-log"></textarea>

JavaScript

js
const xhrButtonSuccess = document.querySelector(".xhr.success");
const xhrButtonError = document.querySelector(".xhr.error");
const xhrButtonAbort = document.querySelector(".xhr.abort");
const log = document.querySelector(".event-log");

function handleEvent(e) {
  log.textContent = `${log.textContent}${e.type} : ${e.loaded} octets transférés\n`;
}

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

function runXHR(url) {
  log.textContent = "";

  const xhr = new XMLHttpRequest();
  addListeners(xhr);
  xhr.open("GET", url);
  xhr.send();
  return xhr;
}

xhrButtonSuccess.addEventListener("click", () => {
  runXHR(
    "https://raw.githubusercontent.com/mdn/content/main/files/fr/_wikihistory.json",
  );
});

xhrButtonError.addEventListener("click", () => {
  runXHR("http://i-dont-exist");
});

xhrButtonAbort.addEventListener("click", () => {
  runXHR(
    "https://raw.githubusercontent.com/mdn/content/main/files/fr/_wikihistory.json",
  ).abort();
});

Résultat

Utiliser XMLHttpRequestUpload

Vous pouvez utiliser l'évènement loadend pour détecter la fin (qu'elle soit réussie ou non) d'un téléchargement. Pour un exemple de code complet qui télécharge un fichier et affiche une barre de progression, consultez la page principale XMLHttpRequestUpload.

js
// Lorsqu'un téléchargement est terminé, nous masquons la barre de progression.
xhr.upload.addEventListener("loadend", (event) => {
  progressBar.classList.remove("visible");
  if (event.loaded !== 0) {
    // Terminaison réussie
    log.textContent = "Téléversement terminé.";
  }
  abortButton.disabled = true;
});

Spécifications

Spécification
XMLHttpRequest
# event-xhr-loadend
XMLHttpRequest
# handler-xhr-onloadend

Compatibilité des navigateurs

api.XMLHttpRequest.loadend_event

api.XMLHttpRequestUpload.loadend_event

Voir aussi