MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

GlobalEventHandlers.onerror

Esta tradução está incompleta. Por favor, ajude a traduzir 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 interface ErrorEvent é disparado  no  window e window.onerror() é invocado.
  • Quando um recurso (como um <img> ou <script>) falha na inicialização, um evento error usando a interface 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 window.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 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)
  • 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  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

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.)

Veja também

Etiquetas do documento e colaboradores

 Colaboradores desta página: mantovani
 Última atualização por: mantovani,