how - prototype javascript ejemplos
"Controlador indefinido" de la lĂnea prototype.js 3877 (4)
Un problema muy nicho:
A veces (30% de las veces) recibo un error de javascript ''manejador indefinido'' en la línea 3877 de la biblioteca prototype.js (versión 1.6.0.2 de google: http://ajax.googleapis.com/ajax/libs/prototype/ 1.6.0.2/prototype.js ).
Ahora, en esta página, tengo un mapa de Google y uso la biblioteca de la ventana de prototipos.
El problema ocurre en IE7 y FF3.
Esta es la información que FireBug brinda:
handler is undefined
? in prototype.js@3871()prototype.js (line 3877)
handler.call(element, event);
Cambié a una versión local de prototypejs y agregué alguna depuración en el método ofensivo (createWraper) pero la depuración nunca aparece antes del error ...
Busqué en Google y encontré otra mención del error en la misma línea, pero no tengo respuesta, así que la publico aquí, donde quizás algún día alguien tendrá una respuesta :).
Una solución realmente simple para "manejador indefinido" del error prototype.js en Prototype es solo ... arreglar prototipo. Encontré consejos aquí: https://prototype.lighthouseapp.com/projects/8886/tickets/407-ie7-i8-report-handler-is-null-or-not-an-object y en realidad está funcionando.
Solo encuentra la línea con: handler.call(element, event);
y reemplace con if (handler) handler.call(element, event)
resuelto con el prototipo 1.6.0.3 y último :)
Esto probablemente cause un error:
Event.observe(myElement, ''click'', myFunction(myParameters));
Deberías hacerlo así en su lugar:
Event.observe(myElement, ''click'', function() { myFunction(myParameters) });
Me acabo de enterar de que este error también ocurre si accidentalmente se deja en el paréntesis en su llamada de observador:
Event.observe(document, ''myapp:application_ready'', myapp.MyClass.initApp());
en lugar de
Event.observe(document, ''myapp:application_ready'', myapp.MyClass.initApp);
Cambié a una versión local de prototypejs y agregué alguna depuración en el método ofensivo (createWraper) pero la depuración nunca aparece antes del error ...
En realidad, la función ofensiva que se llama cuando se produce el error es "envoltorio" que se crea dentro de createWrapper (pero no se llama allí). Básicamente, lo que está sucediendo es que ha adjuntado una función como el controlador de eventos para un elemento, y la función en realidad no existe.
Si está tratando de poner cualquier información de depuración para intentar identificar qué función "no existe", agregue sus mensajes de alerta o la salida de la consola Firebug dentro de la función contenedora entre las líneas 3871 y 3878.