Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
GlobalEventHandlers.onerror
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.
Ungestionnaire d'événement pour l'événementerror. Des événements d'erreur sont déclenchés vers diverses cibles et pour différents types d'erreurs:
- Lorsqu'uneerreur de runtime JavaScript se produit (erreurs de syntaxe comprises), un évènement
errorutilisant l'interfaceErrorEventest envoyé àwindow, etwindow.onerror()est appelé. - Lorsque lechargement d'une ressource (telle que
<img>ou<script>)échoue, un événementerrorutilisant l'interfaceEventest 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.
Dans cet article
Syntaxe
Pour des raisons historiques, des arguments différents sont passés aux gestionnaireswindow.onerror etelement.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 : unError Object (objet)
element.onerror (etwindow.addEventListener('error'))
element.onerror = function(event) { ... }element.onerror accepte une fonction avec un argument unique de typeEvent.
Notes
Quand une erreur de syntaxe**(?)** se produit dans un script chargé à partir d'uneorigine différente, les détails de l'erreur de syntaxe ne sont pas rapportés, afin de prévenir la fuite d'information (voirbug 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'attributcrossorigin de<script> et en faisant en sorte que le serveur envoie les entêtes de réponseCORS 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ésevent,source,lineno,colno,error. Dans les navigteurs qui n'ont pas implémenté cette obligation, ils peuvent toujours être obtenus viaarguments[0] àarguments[2].
Spécifications
| Specification |
|---|
| HTML> # event-error> |
| HTML> # handler-onerror> |