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'interfaceErrorEvent
est déclenché à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 provoqué le chargement, et l'intercepteuronerror()
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
de crossorigin
<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.)