GlobalEventHandlers.onerror
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Um event handler para o evento error
. 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
usando a interfaceErrorEvent
é disparado nowindow
ewindow.onerror()
é invocado. - Quando um recurso (como um
<img>
ou<script>
) falha na inicialização, um eventoerror
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
.
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, 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