GlobalEventHandlers.onerror

Un gestionnaire d'événement pour l'événement error. L'événement error est déclenché vers diverses cibles et pour différents types d'erreurs:

  • Lorsqu'une erreur de runtime JavaScript arrive (erreurs de syntaxe comprises), un évènement error utilisant l'interface ErrorEvent est déclenché à window et window.onerror() est appelé.
  • Lorsque le chargement d'une ressource (telle que <img> ou <script>) échoue, un événement error utilisant l'interface Event est déclenché sur l'élément qui a provoqué le chargement, et l'intercepteur onerror() de l'élément est invoqué.

Le dernier évènement d'erreur n'est pas propagé en amont (bubble up) à l'élément window, mais (en tout cas dans Firefox) peut-être intercepté par une capture unique de window.addEventListener.

Syntaxe

Pour des raisons historiques, des arguments différents sont passés aux intercepteurs window.onerror et element.onerror.

window.onerror

window.onerror = funcRef;

funcRef est une référence à une fonction. Si la fonction retourne true, ceci empêche la propagation de l'intercepteur d'événement par défaut. 

Paramètres de la fonction :

  • Le message d'erreur (string)
  • L'URL du script où l'erreur a été rencontrée (string)
  • Le numéro de ligne d'où l'erreur a été rencontrée (number).
  • Le numéro de colonne dans la ligne d'où l'erreur a été rencontrée (number)
  • L'objet Error (object)

element.onerror

element.onerror accepte une fonction avec un argument unique de type Event.

Notes

Si une erreur de syntaxe(?) est rencontrée dans un script chargé à partir d'une origine différente, les détails de l'erreur de syntaxe ne sont pas reportés, afin de prévenir la fuite d'information (voir bug 363897). A la place, l'erreur est simplement reportée en tant que "Script error". Ce comportement peut être surchargé par certains navigateurs utilisant l'attribut crossorigin de <script> et dont le serveur retourne l'entête de réponse CORS HTTP appropriée.

En utilisant le balisage html (<body onerror="alert('an error occurred')>...), l'argument n'est pas nommé. Il peut être référencé par arguments[0] comme arguments[2].

Spécifications

Spécification Statuts Commentaires
WHATWG HTML Living Standard
La définition de 'onerror' dans cette spécification.
Standard évolutif  

Compatibilité des navigateurs

Avant Firefox 14, si le chargement d'un <script> échouait, window.onerror était invoqué avec le message "Error loading script". Ce bug a été corrigé par ce correctif bug 737087. A présent, scriptElement.onerror est invoqué dans ce genre de cas.

Depuis Firefox 31 il est possible d'accéder à la trace détaillée (stack trace) de l'erreur de script à partir de window.onerror via l'object qui fournit l'erreur : Error (bug 355430.)

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : Hell_Carlito, FGM, miam
 Dernière mise à jour par : Hell_Carlito,