Registro de errores de JavaScript del lado cliente, Parte I
Por Karolis Dzeja, Desarrollador de UX
Publicado originalmente en mi blog: http://karolis-dev.com/client-side-javascript-error-logging-part-i/
Esta es la primera parte de una serie de artículos que describen las prácticas recomendadas para registrar errores de JavaScript del lado cliente.
Vamos a agotar nuestra lista de requisitos:
- Queremos tener la capacidad de registrar todos los errores.
- No queremos realizar el tiempo de carga de la página para el visitante.
- Queremos poder responder a los errores lo más rápido posible.
- Queremos poder elegir qué información registrar.
¿Cómo podemos saber si se produjo un error? JavaScript tiene un controlador de even
tos window.onerror. Este es un ejemplo de cómo se podría utilizar:
window.onerror = function(message, url, linenumber) {
sendErrorToServer({message: message, line: linenumber, url: url});
}
Cada vez que se produce un error en tiempo de ejecución, podemos obtener el mensaje de error, la dirección URL del archivo y el número de línea. ¿Qué es sendErrorTo
Server? ¿Necesitamos un servidor? Hablaremos de eso en la próxima parte. Lo más probable es que ya tenga Instalado Google Analytics y, sin necesidad de configurar un servidor, podemos enviar eventos a Google Analytics de esta forma:
<!DOCTYPE html>
<html>
<head>
<script>
var _gaq = _gaq || ;
[] window.onerror = function(message, url, linenumber) {
_gaq.push();
}['_trackEvent','Error',message, url, linenumber]
</script>
<!-- rest of page --></head></html>
La forma en que funciona Google Analytics es que crea una matriz _gaq y
puede empezar a recopilar comandos inmediatamente mientras el script ga.
js se carga de forma asincrónica. A continuación, el script examina la matriz, ejecuta los comandos en cola y redefine la función de inse
rción de _gaq para
ejecutar comandos inmediatamente a medida que se agregan. Queremos poner nuestro guión en la parte superior de la <head
> y si lo hacemos, _ga
q aún no se definiría por el fragmento de código que copiamos de Google, por eso nos aseguramos de definirlo.</head>
Este es un gran comienzo, pero las cosas aún no son perfectas. Mirando la lista de requisitos en la parte superior: no estamos realizando la carga de la página para el visitante, no tienen que descargar nada adicional, y poniendo nuestro guión en la parte superior de la <head> antes
que cualquier otro script, podemos registrar errores de todos los scripts que se cargan después.</head> Pero los eventos no siempre aparecen inmediatamente en Google Analytics. Estamos limitados a cuatro campos para nuestros datos. Y según la política de privacidad de Google, no podemos rastrear ninguna información identificable por personalidad sobre nuestros visitantes.
Si le pedimos a un cliente que implemente esto en su sitio web, tendrá la misma visibilidad de los errores que nosotros. Además, no podemos limitar ni filtrar el registro de errores sin modificar este script y pedir al cliente que lo actualice de nuevo.
Manténgase atento para averiguar cómo podemos resolver todos estos problemas…