--- title: GlobalEventHandlers.onerror slug: Web/API/GlobalEventHandlers/onerror tags: - API - HTML DOM - Propriedade - Referencia translation_of: Web/API/GlobalEventHandlers/onerror ---
Um event handler para o evento error . Eventos de erro são disparados contra diversos tipos de alvos, para diferentes tipos de erros:
error usando a interface {{domxref("ErrorEvent")}} é disparado no {{domxref("window")}} e window.onerror() é invocado.error usando a interface {{domxref("Event")}} é disparado no elemento , que inicializa o load e o onerror() handler do elemento é invocado. Esse evento de erro emergem para a janela, mas (pelo menos no Firefox) pode ser manipulado com uma captura única {{domxref("window.addEventListener")}}.Instalando um manipulador de eventos de erro global é útil para compilação automatizada de relatórios de erro.
Por questões históricas, diferentes argumentos são passados para os manipuladores window.onerror e element.onerror;
window.onerror = function(message, source, lineno, colno, error) { ... }
Parâmetros da função:
message: mensagem de erro (string). Disponível como event (sic!) no manipulador HTML onerror="" .source: URL do script onde o erro foi disparado(string)lineno: Número da linha onde o evento foi disparado (number)colno: Número da coluna para a linha onde o evento ocorreu (number) {{gecko_minversion_inline("31.0")}}error: Error Object (object) {{gecko_minversion_inline("31.0")}}
Quando a função retorna verdadeira, ela evita o disparo do manipulador de evento padrão
element.onerror = function(event) { ... }
element.onerror aceita uma função dom um único argumento do tipo {{domxref("Event")}}.
Quando um erro de sintaxe(?) ocorre em um script, carregado de uma origem diferente, os detalhes do erro de sintaxe não são reportados para previnir vazamento de informações (veja {{bug("363897")}}). Ao invés de exibir simplesmente "Script error." (erro de script), este comportamento pode ser sobrescrito em alguns navegadores usando o atributo {{htmlattrxref("crossorigin","script")}} no {{HTMLElement("script")}} e tendo o servidor enviado os cabeçalhos HTTP CORS apropriados. Uma solução alternativa é isolar o "Script error." e manipulá-lo sabendo que o detalhe do erro é visível somente no console do navegador e não acessível através do JavaScript.
window.onerror = function (msg, url, lineNo, columnNo, error) {
var string = msg.toLowerCase();
var substring = "script error";
if (string.indexOf(substring) > -1){
alert('Script Error: See Browser Console for Detail');
} else {
alert(msg, url, lineNo, columnNo, error);
}
return false;
};
Quando usamos a marcação HTML inline (<body onerror="alert('an error occurred')">), a especificação HTML requer argumentos passados para o onerror identificados como event, source, lineno, colno, error. Os navegadors que não implementam este requerimento, podem ainda serem obtidos por arguments[0] até arguments[2].
| Especificação | Status | Comentário |
|---|---|---|
| {{SpecName('HTML WHATWG','webappapis.html#handler-onerror','onerror')}} | {{Spec2('HTML WHATWG')}} |
Antes do Firefox 14, quando um {{HTMLElement("script")}} falhava na inicialização, window.onerror era invocada com a mensagem "Error loading script"(erro de leitura de script). Isto foi corrigido no {{bug("737087")}}, agora scriptElement.onerror é chamado ao invés disto.
Desde o Firefox 31, os últimos 2 argumentos (colno and error) foram adicionados, o que significa que você tem acesso a pilha de rastreamento de um erro de script através do window.onerror por intermédio do Error object ({{bug("355430")}}.)