GlobalEventHandlers.onerror
Um event handler (en-US) para o evento error
(en-US) . Eventos de erro são disparados contra diversos tipos de alvos, para diferentes tipos de erros:
- Quando um erro de execução (runtime error) de JavaScript (incluindo erros de sintaxe) ocorrem, um evento
error
(en-US) usando a interfaceErrorEvent
(en-US) é disparado nowindow
ewindow.onerror()
é invocado. - Quando um recurso (como um
<img>
ou<script>
) falha na inicialização, um eventoerror
(en-US) usando a interfaceEvent
é disparado no elemento , que inicializa o load e oonerror()
handler do elemento é invocado. Esse evento de erro emergem para a janela, mas (pelo menos no Firefox) pode ser manipulado com uma captura únicawindow.addEventListener
(en-US).
Instalando um manipulador de eventos de erro global é útil para compilação automatizada de relatórios de erro.
Sintaxe
Por questões históricas, diferentes argumentos são passados para os manipuladores window.onerror e element.onerror;
window.onerror
window.onerror = function(message, source, lineno, colno, error) { ... }
Parâmetros da função:
message
: mensagem de erro (string). Disponível comoevent
(sic!) no manipulador HTMLonerror=""
.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)error
: Error Object (object)
Quando a função retorna verdadeira, ela evita o disparo do manipulador de evento padrão
element.onerror
element.onerror = function(event) { ... }
element.onerror
aceita uma função dom um único argumento do tipo Event
.
Notas
Quando um erro de sintaxe**(?)** ocorre em um script, carregado de uma origem diferente (en-US), os detalhes do erro de sintaxe não são reportados para previnir vazamento de informações (veja Erro do Firefox 363897). Ao invés de exibir simplesmente "Script error." (erro de script)
, este comportamento pode ser sobrescrito em alguns navegadores usando o atributo crossorigin
no <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ções
Specification |
---|
HTML Standard # event-error |
HTML Standard # handler-onerror |
Compatibilidade com navegadores
BCD tables only load in the browser