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
js
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
js
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 bug 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.
js
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 |
---|---|---|
HTML Living Standard The definition of 'onerror' in that specification. |
Padrão em tempo real |
Compatibilidade com 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.)