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.
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.
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 :
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 :
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
onerrorsur l'élément HTML<body>attache les gestionnaires d'évènementerroràwindow(et non à l'élément<body>). Pour ce gestionnaire d'évènement, le premier paramètre est appeléevent, et nonmessage, 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.
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
<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 :</label>
<textarea
readonly
class="event-log-contents"
rows="8"
cols="30"
id="eventLog"></textarea>
</div>
JavaScript
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
- Cet évènement sur les cibles
Element: évènementerror Window: évènementunhandledrejection