2010-04-12 14 views
7

Como la mayoría de los entornos de producción que tenemos algo de configuración para enviar una notificación si hay un error en nuestra aplicación web. El problema es, por supuesto, que esto solo cubre errores en el lado del servidor.informar automáticamente errores en JavaScript al desarrollador

Mi pregunta a la comunidad es: ¿Qué estás haciendo con los errores del lado del cliente, especialmente en javascript?

¿Y qué pasa con otros problemas de calidad de servicio, como el procesamiento lento y otras cosas que pueden deberse a la máquina del cliente?

Respuesta

8

Puede manejar JavaScript del lado cliente con errores window.onerror caso

Dentro del controlador hacer una petición Ajax a su minero de error en el servidor y el registro de errores.

http://www.javascriptkit.com/javatutors/error.shtml

Hovewer window.onerror no es compatible con todos los navegadores, jQuery puede llenar el vacío con su propio controlador de eventos: una combinación de window.onerror y jQuery(window).error debería ser suficiente

+2

Solo asegúrese de que el código de manejo del onerror sea a prueba de balas ;-) – spender

7

No hay una gran trato que puede hacer sobre los errores de JavaScript en el extremo del cliente. Puede interceptar window.onerror y usarlo en AJAX un informe posterior, pero:

(a) no es compatible con WebKit u Opera. Para la captura de todos los errores que tendría que envolver cada ejecución directa, evento y punto de entrada de tiempo de espera en un try { ... }, que es muy desordenado y le da aún menos información que el manejador onerror.

(b) es probable que se inunde con informes de errores que no puede hacer nada, con poca depuración posible debido a la falta de información. Usted puede ser capaz de salirse con la suya en una aplicación que sólo se accede por los clientes que conoces, pero en un sitio de acceso público, una gran cantidad de errores va a ser falsa. Cosas causadas por factores como:

  • conexiones a sitios que alojan scripts o AJAX que falla o está bloqueado por firewalls;

  • configuración de seguridad inesperada (los navegadores tienen opciones para bloquear muchas interfaces arbitrariamente);

  • complementos de navegador rotos, scripts de GreaseMonkey, proxies de filtrado y herramientas falsas de "Seguridad de Internet" jugando con su código;

  • agentes incompatibles que se comportan de manera extraña, como navegadores móviles (especialmente el espantoso IEMobile) y, si tienen acceso, bots de navegador automático;

  • muchos errores causados ​​por contenido de terceros como anuncios, si tiene alguno.

Una vez más, para una aplicación de uso limitado que puede contactar directamente a cualquier usuario que está experimentando problemas, podría ser de utilidad, pero para un sitio utilizado por el público en general es un no-arrancador.

Lo mejor es utilizar la "mejora progresiva" para garantizar que su aplicación aún funcione cuando falla JavaScript.

+1

El objetivo de hacer comprobaciones de la calidad del servicio es determinar con qué frecuencia ocurre un problema común y luego centrarse en ellos primero. Si ni siquiera tenemos eso, entonces estás disparando a ciegas. Obtengo una tonelada de 1 del lado del servidor también, incluyendo interbloqueos aleatorios, personas que cierran su conexión en el medio de una solicitud y toneladas de otras cosas únicas. – Cine

Cuestiones relacionadas