Registar os erros de JavaScript à saída do cliente no servidor [fechado]
estou a executar um ASP.NET Site onde eu tenho problemas para encontrar alguns erros JavaScript apenas com testes manuais.
Existe a possibilidade de capturar todos os erros de JavaScript no lado do cliente e registá-los no servidor, ou seja, no EventLog (via Webservice ou algo do género)?
8 answers
Você poderia tentar configurar o seu próprio manipulador para o evento onerror e usar o XMLHttpRequest para dizer ao servidor o que correu mal, no entanto, dado que não faz parte de nenhuma especificação, o suporte é um pouco estranho.
Aqui está um exemplo de Usando o XMLHttpRequest para registar os 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 este problema escrevendo seu próprio código. No entanto, note que existem serviços lá fora que parece ter assegurado que o código JS necessário Funciona em muitos navegadores. Encontrei o ... seguinte:
Não posso falar por nenhum destes serviços, pois ainda não os experimentei.Acabei de implementar o registo de erros do lado do servidor em erros de javascript num projecto a trabalhar. Há uma mistura de código legado e novo código usando jQuery .
Uso uma combinação de window.onerror
e embrulho os manipuladores de eventos jQuery e a função onready com uma função de tratamento de erros (ver: JavaScript De Detecção de erros: Why window.onerror não é suficiente ).
-
window.onerror
: Apanha todos os erros no IE( e a maioria dos erros no Firefox), mas não faz nada no Safari e Ópera. - manipuladores de eventos de jQuery: detecta erros de eventos de jQuery em todos os navegadores.
- jQuery ready function: detecta erros de inicialização em todos os navegadores.
Uma vez que eu tenha pego o erro, eu adiciono algumas propriedades extras a ele (url, navegador, 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 leva os argumentos postados e os emite para o nosso padrão de servidor de logging framework.
eu faria. gosto de abrir o código para isso (como um plugin jQuery). Se alguém estiver interessado, avise-me, ajudaria a convencer os chefes!
Se utilizar o Google Analytics, poderá registar erros de javascript em Eventos do Google Analytics.
Ver esta aplicação: http://siteapps.com/app/log_javascript_errors_with_ga-181
Espero que ajude.Também eu recomendo usando TraceTool utilitário, ele vem com suporte de JavaScript e é muito útil para a monitorização de JS.
Se quiser registar os erros do lado do cliente de volta ao servidor, terá de fazer algum tipo de processamento do servidor. A melhor aposta seria ter um serviço web que você pode acessar através de JavaScript (AJAX) e você passar a sua informação de log de erro para ele.
Não resolve 100% o problema porque se o problema é com o servidor web que hospedou o serviço web que está em apuros, a outra opção seria enviar a informação através de uma página padrão através de uma cadeia de consultas, 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 carregar a fonte de uma imagem. No entanto, ele contorna as chamadas de JavaScript de cross-domain. Tenha em mente que você está em apuros se alguém tem imagens desligadas;)
Tenho usado Appfail recentemente, que captura ambos asp.net e erros de JavaScript