GlobalEventHandlers.onerror

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 (en-US) √© 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 (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 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
HTML Living Standard
The definition of 'onerror' in that specification.
Padr√£o em tempo real  

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