--- title: GlobalEventHandlers.onerror slug: Web/API/GlobalEventHandlers/onerror tags: - API - HTML DOM - Propriété - Reference translation_of: Web/API/GlobalEventHandlers/onerror ---
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:
error
utilisant l'interface {{domxref("ErrorEvent")}} est envoyé à {{domxref("window")}}, et window.onerror()
est appelé.error
utilisant l'interface {{domxref("Event")}} est déclenché sur l'élément qui a initié le chargement, et le gestionnaire onerror()
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 capture {{domxref("window.addEventListener")}}.Pour des raisons historiques, des arguments différents sont passés aux gestionnaires window.onerror
et element.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 comme event
(sic !) dans le gestionnaire de HTML onerror=""
et aussi comme objet évènement lors de l'envoi d'un Event à window,
auquel cas les autres arguments ne seront pas fournis (au contraire de ErrorEvent, qui amène le passage de l'ensemble complet des arguments à window.onerror
, tandis que seul l'objet d'évènement d'erreur est passé aux gestionnaires de window.addEventListener('error'))
window.addEventListener('error')
)element.onerror = function(event) { ... }
element.onerror
accepte une fonction avec un argument unique de type {{domxref("Event")}}.
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("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 {{htmlattrxref("crossorigin","script")}}
de {{HTMLElement("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écification | Statut | Commentaire |
---|---|---|
{{SpecName('HTML WHATWG','webappapis.html#handler-onerror','onerror')}} | {{Spec2('HTML WHATWG')}} |
{{Compat("api.GlobalEventHandlers.onerror")}}