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

Window : évènement error

Baseline Widely available

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.

L'évènement error est déclenché sur un objet Window lorsqu'une ressource n'a pas pu être chargée ou utilisée — par exemple si un script rencontre une erreur d'exécution.

Cet évènement n'est généré que pour les erreurs de script déclenchées de manière synchrone, comme lors du chargement initial ou à l'intérieur des gestionnaires d'évènements. Si une promesse est rejetée (y compris un throw non intercepté dans une async function) et qu'aucun gestionnaire de rejet n'est attaché, un évènement unhandledrejection est déclenché à la place.

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("error", (event) => { })

onerror = (message, source, lineno, colno, error) => { }

Note : Pour des raisons historiques, onerror sur les objets Window et WorkerGlobalScope est la seule propriété de gestionnaire d'évènement qui reçoit plus d'un argument.

Type d'évènement

L'objet évènement est une instance de ErrorEvent s'il a été généré à partir d'un élément de l'interface utilisateur, ou une instance de Event sinon.

Event ErrorEvent

Description

Propriété du gestionnaire d'évènement

Pour des raisons historiques, la propriété de gestionnaire d'évènement onerror, uniquement sur les objets Window et WorkerGlobalScope, a un comportement différent des autres propriétés de gestionnaire d'évènement.

Notez que cela ne s'applique qu'aux gestionnaires assignés à onerror, et non à ceux ajoutés avec addEventListener().

Annulation

La plupart des gestionnaires d'évènements assignés aux propriétés de gestionnaire d'évènements peuvent annuler le comportement par défaut de l'évènement en retournant false depuis le gestionnaire :

js
textarea.onkeydown = () => false;

Cependant, pour qu'une propriété de gestionnaire d'évènement annule le comportement par défaut de l'évènement error de Window, elle doit plutôt retourner true :

js
window.onerror = () => true;

Lorsque l'annulation est effectuée, l'erreur n'apparaîtra pas dans la console, mais le script en cours s'arrêtera toujours.

Arguments

La signature du gestionnaire d'évènements est asymétrique entre addEventListener() et onerror. Le gestionnaire d'évènements passé à Window.addEventListener() reçoit un seul objet ErrorEvent, tandis que le gestionnaire onerror reçoit cinq arguments, correspondant aux propriétés de l'objet ErrorEvent :

message

Une chaîne de caractères contenant un message d'erreur lisible décrivant le problème. Identique à ErrorEvent.message.

Note : En HTML, l'attribut de gestionnaire d'évènement de contenu onerror sur l'élément HTML <body> attache les gestionnaires d'évènement error à window (et non à l'élément <body>). Pour ce gestionnaire d'évènement, le premier paramètre est appelé event, et non message, bien qu'il contienne toujours une chaîne de caractères ; ainsi, vous utiliseriez <body onerror="console.error(event)"> pour consigner le message d'erreur.

source

Une chaîne de caractères contenant l'URL du script qui a généré l'erreur.

lineno

Un entier contenant le numéro de ligne du fichier de script sur lequel l'erreur s'est produite.

colno

Un entier contenant le numéro de colonne du fichier de script sur lequel l'erreur s'est produite.

error

L'erreur levée. Généralement un objet Error.

js
window.onerror = (a, b, c, d, e) => {
  console.log(`message: ${a}`);
  console.log(`source: ${b}`);
  console.log(`lineno: ${c}`);
  console.log(`colno: ${d}`);
  console.log(`error: ${e}`);

  return true;
};

Note : Ces noms de paramètres sont observables avec un attribut de gestionnaire d'évènement HTML, où le premier paramètre est appelé event au lieu de message.

Ce comportement spécial ne se produit que pour le gestionnaire d'évènement onerror sur window. Le gestionnaire Element.onerror reçoit toujours un seul objet ErrorEvent.

Exemples

Exemple interactif

HTML

html
<div class="controls">
  <button id="script-error" type="button">Générer une erreur de script</button>
  <img src="bad-image.jpg" class="bad-img" alt="Je n'existe pas" />
</div>

<div class="event-log">
  <label for="eventLog">Journal des événements&nbsp;:</label>
  <textarea
    readonly
    class="event-log-contents"
    rows="8"
    cols="30"
    id="eventLog"></textarea>
</div>

JavaScript

js
const log = document.querySelector(".event-log-contents");

window.addEventListener("error", (event) => {
  log.textContent = `${log.textContent}${event.type}: ${event.message}\n`;
  console.log(event);
});

const scriptError = document.querySelector("#script-error");
scriptError.addEventListener("click", () => {
  throw new Error("Ceci est une erreur de script");
});

Résultat

Spécifications

Specification
HTML
# event-error
HTML
# handler-onerror

Compatibilité des navigateurs

Voir aussi