GlobalEventHandlers.onerror
io error: No such file or directory (os error 2) (/home/runner/work/yari/yari/mdn/translated-content/files/fr/web/api/html_dom_api/index.md)
Un gestionnaire d'événement pour l'événement error
. Des événements d'erreur sont déclenchés vers diverses cibles et pour différents types d'erreurs:
- Lorsqu'une erreur de runtime JavaScript se produit (erreurs de syntaxe comprises), un évènement
error
utilisant l'interfaceErrorEvent
est envoyé àwindow
, etwindow.onerror()
est appelé. - Lorsque le chargement d'une ressource (telle que
<img>
ou<script>
) échoue, un événementerror
utilisant l'interfaceEvent
est déclenché sur l'élément qui a initié le chargement, et le gestionnaireonerror()
de l'élément est invoqué. Ces évènements d'erreur ne remontent pas à window, mais (au moins dans FireFox) ils peuvent être gérés par une unique capturewindow.addEventListener
.
Syntaxe
Pour des raisons historiques, des arguments différents sont passés aux gestionnaires window.onerror
et element.onerror
.
window.onerror
window.onerror = function(messageOrEvent, source, noligne, nocolonne, erreur) { ... }
Paramètres de la fonction :
message
: message d'erreur (chaîne ou objet évènement). Disponible commeevent
(sic !) dans le gestionnaire de HTMLonerror=""
.- source : l'URL du script où l'erreur a été déclenchée (chaîne)
- noligne : le numéro de ligne où l'erreur a été déclenchée (nombre)
- nocolonne : le numéro de colonne où l'erreur a été déclenchée (nombre)
- erreur : un Error Object (objet)
element.onerror (et window.addEventListener('error')
)
element.onerror = function(event) { ... }
element.onerror
accepte une fonction avec un argument unique de type Event
.
Notes
Quand une erreur de syntaxe**(?)** se produit dans un script chargé à partir d'une origine différente, les détails de l'erreur de syntaxe ne sont pas rapportés, afin de prévenir la fuite d'information (voir bug Firefox 363897). A la place, l'erreur est simplement reportée en tant que "Script error"
. Ce comportement peut être surchargé par certains navigateurs en utilisant l'attribut crossorigin
de <script>
et en faisant en sorte que le serveur envoie les entêtes de réponse CORS HTTP appropriés. Un contournement consiste à isoler "Script error" et à la gérer en sachant que les détails de l'erreur ne sont visibles que la console du navigateur et non accessibles en JavaScript.
window.onerror = function (msg, url, noLigne, noColonne, erreur) {
var chaine = msg.toLowerCase();
var souschaine = "script error";
if (chaine.indexOf(souschaine) > -1) {
alert("Script Error : voir la Console du Navigateur pour les Détails");
} else {
var message = [
"Message : " + msg,
"URL : " + url,
"Ligne : " + noLigne,
"Colonne : " + noColonne,
"Objet Error : " + JSON.stringify(erreur),
].join(" - ");
alert(message);
}
return false;
};
Lors de l'utilisation du balisage html intégré (<body onerror="alert('une erreur est survenue')>...), la spécification HTML requiert que les arguments passés à onerror
soient nommés event
, source
, lineno
, colno
, error
. Dans les navigteurs qui n'ont pas implémenté cette obligation, ils peuvent toujours être obtenus via arguments[0]
à arguments[2]
.
Spécifications
Specification |
---|
HTML Standard # event-error |
HTML Standard # handler-onerror |
Compatibilité des navigateurs
BCD tables only load in the browser