No puedo entender por qué el prototipo suprime los mensajes de error en el evento dom:loaded
y en los controladores AJAX.Prototype JS traga errores en dom: cargado, y ajax callbacks?
Dado el siguiente fragmento de HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Conforming XHTML 1.1 Template</title>
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript">
document.observe('dom:loaded', function() {
console.log('domready');
console.log(idontexist);
});
</script>
</head>
<body>
</body>
</html>
Se desencadena el evento domready, veo el registro en la consola, pero no hay ninguna indicación de cualquier error de ningún tipo. Si mueve la línea de console.log(idontexist);
fuera del manipulador, se obtiene la idontexist
no se define
error en la consola. Me parece un poco raro, que en otros manejadores de eventos, como 'clic', aparece el mensaje de error, parece que es solo el dom:loaded
el que tiene este problema.
Lo mismo vale para los manipuladores de AJAX:
new Ajax.Request('/', {
method: 'get',
onComplete: function(r) {
console.log('xhr complete');
alert(youwontseeme);
}
});
Usted no verá ningún error. Esto es con prototype.js 1.6.1, y no puedo encontrar ninguna indicación de este comportamiento en los documentos, ni una forma de habilitar el informe de errores en estos controladores.
he intentado recorrer el código con el depurador de FireBug, y parece que saltar a una función en la línea 53 llamado K, cuando se encuentra con la variable que falta en el controlador dom:loaded
:
K: function(x) { return x }
Pero, ¿cómo? ¿Por qué? ¿Cuando? No puedo ver ningún bloque try/catch allí, ¿cómo termina el flujo del programa?
Sé que puedo hacer que los errores sean visibles empacando mi controlador dom:ready
en bloques try/catch, pero esa no es una opción muy cómoda. Lo mismo ocurre con el registro de un controlador global onException para las llamadas AJAX.
¿Por qué incluso suprime los errores? ¿Alguien se encontró con esto antes?
Mientras que sí, esta es una solución parcial, he mencionado que me gustaría ver una solución sin registrarse onException un controlador global para la llamadas AJAX, y esto también se aplica a la per- solicite controladores. –