example - como funciona javascript
Logging Clients Errores de JavaScript en el Servidor (8)
Acabo de implementar el registro de errores del lado del servidor en los errores de JavaScript en un proyecto en el trabajo. Hay una mezcla de código heredado y código nuevo usando jQuery .
Utilizo una combinación de window.onerror
y envolviendo los manejadores de eventos jQuery y la función onready con una función de manejo de errores (vea: JavaScript Error Tracking: Why window.onerror Is Not Suough ).
-
window.onerror
: detecta todos los errores en IE (y la mayoría de los errores en Firefox), pero no hace nada en Safari y Opera. - Controladores de eventos jQuery: detecta errores de eventos jQuery en todos los navegadores.
- Función jQuery ready: detecta errores de inicialización en todos los navegadores.
Una vez que haya captado el error, le agrego algunas propiedades adicionales (url, navegador, etc.) y luego lo vuelvo a enviar al servidor usando una llamada ajax.
En el servidor tengo una página pequeña que solo toma los argumentos publicados y los envía a nuestro marco de registro de servidor normal.
Me gustaría abrir el código fuente para esto (como un plugin jQuery). Si alguien está interesado, hágamelo saber, ¡ayudaría a convencer a los jefes!
Estoy ejecutando un sitio ASP.NET donde tengo problemas para encontrar algunos errores de JavaScript solo con las pruebas manuales.
¿Existe la posibilidad de detectar todos los errores de JavaScript en el cliente y registrarlos en el servidor, es decir, en la lista de eventos (a través del servicio web o algo así)?
He estado usando Appfail recientemente, que captura errores tanto de asp.net como de JavaScript
Podría hacer una llamada Ajax al servidor desde un try / catch, pero probablemente sea lo mejor que pueda hacer.
¿Puedo sugerir pruebas de unidades de JavaScript en su lugar? Posiblemente con JSUnit ?
Podría intentar configurar su propio controlador para el evento onerror y usar XMLHttpRequest para indicarle al servidor qué fue lo que salió mal, sin embargo, dado que no forma parte de ninguna especificación, el soporte técnico es algo escabroso .
Aquí hay un ejemplo de Using XMLHttpRequest para registrar errores 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);
};
Si quiere volver a registrar los errores del lado del cliente en el servidor, tendrá que hacer algún tipo de procesamiento del servidor. La mejor opción sería tener un servicio web al que pueda acceder a través de JavaScript (AJAX) y pasarle su información de registro de errores.
No resuelve el problema al 100% porque si el problema es que el servidor web que aloja el servicio web tiene problemas, su otra opción sería enviar la información a través de una cadena estándar a través de una cadena de consulta. Un método de hacerlo es mediante la generación dinámica de etiquetas de imagen (que luego se eliminan) ya que el navegador intentará cargar el origen de una imagen. Sin embargo, evita las llamadas de JavaScript entre dominios. Tenga en cuenta que tiene problemas si alguien tiene imágenes apagadas;)
Si usa Google Analytics, puede registrar errores de Javascript en Eventos de Google Analytics.
Vea esta aplicación: http://siteapps.com/app/log_javascript_errors_with_ga-181
Espero eso ayude.
También lo recomiendo usando la utilidad TraceTool , viene con soporte de JavaScript y es muy útil para el monitoreo de JS.
Respuesta corta: Sí, es posible.
Respuesta más larga: las personas ya han escrito sobre cómo puede (al menos parcialmente) resolver este problema escribiendo su propio código. Sin embargo, tenga en cuenta que hay servicios que parecen haberse asegurado de que el código JS funcione en muchos navegadores. He encontrado lo siguiente:
No puedo hablar por ninguno de estos servicios ya que aún no los he probado.