Registrando erros de JavaScript do cliente no servidor

Estou executando um site asp.net onde eu tenho problemas para encontrar alguns erros de JavaScript apenas com testes manuais.

Existe a possibilidade de pegar todos os erros de JavaScript no Clientside e registrá-los no servidor ou seja, no EventLog (via Webservice ou algo parecido)?

Você poderia tentar configurar seu próprio manipulador para o evento onerror e usar XMLHttpRequest para informar ao servidor o que deu errado, entretanto, como não faz parte de nenhuma especificação, o suporte é um tanto esquisito .

Aqui está um exemplo de Usando XMLHttpRequest para registrar erros de JavaScript :

window.onerror = function(msg, url, line) { var req = new XMLHttpRequest(); var params = "msg=" + encodeURIComponent(msg) + '&url=' + encodeURIComponent(url) + "&line=" + line; req.open("POST", "/scripts/logerror.php"); req.send(params); }; 

Resposta curta: Sim, é possível.

Resposta mais longa: As pessoas já escreveram sobre como você pode (pelo menos parcialmente) resolver esse problema escrevendo seu próprio código. No entanto, observe que existem serviços por aí que parecem ter certeza de que o código JS necessário funciona em muitos navegadores. Eu encontrei o seguinte:

Eu não posso falar por nenhum desses serviços, pois ainda não os testei.

Acabei de implementar o log de erro do lado do servidor em erros de javascript em um projeto no trabalho. Há uma mistura de código legado e novo código usando jQuery .

Eu uso uma combinação de window.onerror e envolvendo os manipuladores de events jQuery e a function onready com uma function de manipulação de erros (consulte: Rastreamento de erro JavaScript: por que window.onerror não é suficiente ).

  • window.onerror : pega todos os erros no IE (e a maioria dos erros no Firefox), mas não faz nada no Safari e no Opera.
  • Manipuladores de events do jQuery: captura erros de events do jQuery em todos os navegadores.
  • Função pronta para jQuery: captura erros de boot em todos os navegadores.

Uma vez que eu peguei o erro, eu adicionei algumas propriedades extras a ele (url, browser, etc) e, em seguida, postá-lo de volta para o servidor usando uma chamada ajax.

No servidor, eu tenho uma pequena página que apenas pega os argumentos postados e os envia para nossa estrutura de registro de servidor normal.

Eu gostaria de abrir o código fonte para isso (como um plugin jQuery). Se alguém estiver interessado me avise, ajudaria a convencer os patrões!

Se você usa o Google Analytics, pode registrar erros de javascript nos events do Google Analytics.

Veja este aplicativo: http://siteapps.com/app/log_javascript_errors_with_ga-181

Espero que ajude.

Também recomendo usar o utilitário TraceTool , ele vem com suporte a JavaScript e é muito útil para o monitoramento de JS.

Se você está querendo registrar os erros do lado do cliente de volta para o servidor, você terá que fazer algum tipo de processamento do servidor. A melhor aposta seria ter um serviço da web que você possa acessar via JavaScript (AJAX) e passar suas informações de log de erros para ele.

100% não resolve o problema porque se o problema é com o servidor web que hospeda o serviço web você está com problemas, você tem outra opção seria enviar as informações através de uma página padrão através de uma string de consulta, Um método de fazer isso é através da geração dinâmica de tags de imagem (que são então removidos), como o navegador vai tentar e carregar a fonte de uma imagem. Ele fica em torno de chamadas de JavaScript entre domínios bem. Tenha em mente que você está com problemas se alguém tiver imagens desativadas;)

Eu tenho usado o Appfail recentemente, que captura os erros asp.net e JavaScript

Você poderia potencialmente fazer uma chamada Ajax para o servidor a partir de um try / catch, mas isso provavelmente é o melhor que você pode fazer.

Posso sugerir o teste de unidade JavaScript? Possivelmente com o JSUnit ?