Esta tradução está incompleta. Ajude atraduzir este artigo.
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 bug 363897). Ao invés de exibir simplesmente "Script error." (erro de script)
, este comportamento pode ser sobrescrito em alguns navegadores usando o atributo
no crossorigin
<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
Especificação | Status | Comentário |
---|---|---|
WHATWG HTML Living Standard The definition of 'onerror' in that specification. |
Living Standard |
Compatibilidade de navegadores
Antes do Firefox 14, quando um <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.)