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

Author: James McMahon, 2008-09-23

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);
};
 63
Author: Jonny Buchanan, 2015-06-30 12:53:07

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.
 24
Author: Ztyx, 2017-12-14 09:56:24

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!

 12
Author: Karl, 2013-02-03 18:50:25

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.
 1
Author: Leandro Lages, 2013-04-15 21:26:06

Também eu recomendo usando TraceTool utilitário, ele vem com suporte de JavaScript e é muito útil para a monitorização de JS.

 0
Author: cleg, 2008-09-23 07:21:40

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

 0
Author: Aaron Powell, 2008-09-23 07:42:39

Tenho usado Appfail recentemente, que captura ambos asp.net e erros de JavaScript

 0
Author: levelnis, 2013-02-03 19:15:32
Você pode fazer uma chamada Ajax para o servidor a partir de uma tentativa/captura, mas isso é provavelmente o melhor que você pode fazer. Posso sugerir antes um teste de unidade JavaScript? Possivelmente comJSUnit ?
 0
Author: Mike Stone, 2013-06-08 14:02:51