7 votes

"undefined handler" de prototype.js ligne 3877

Un problème de niche :

Je reçois parfois (30 % du temps) une erreur javascript "undefined handler" à la ligne 3877 de la bibliothèque prototype.js (version 1.6.0.2 de google) : http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js ).

Maintenant, sur cette page, j'ai une carte Google et j'utilise la bibliothèque Prototype Window.

Le problème se produit dans IE7 et FF3.

C'est l'information que FireBug donne :

handler is undefined
? in prototype.js@3871()prototype.js (line 3877)
handler.call(element, event);

Je suis passé à une version locale de prototypejs et j'ai ajouté du débogage dans la méthode incriminée (createWraper), mais le débogage n'apparaît jamais avant l'erreur...

J'ai fait des recherches et j'ai trouvé une autre mention de l'erreur sur la même ligne, mais pas de réponse, alors je la poste ici où peut-être, un jour, quelqu'un aura une réponse :).

5voto

Stormie Points 153

Je viens de découvrir que cette erreur se produit également si vous laissez accidentellement les parenthèses sur votre appel d'observateur :

Event.observe(document, 'myapp:application_ready', myapp.MyClass.initApp());

au lieu de

Event.observe(document, 'myapp:application_ready', myapp.MyClass.initApp);

3voto

David McLaughlin Points 3447

Je suis passé à une version locale de prototypejs et j'ai ajouté quelques débogages. dans la méthode incriminée (createWraper) mais le débogage n'apparaît jamais avant l'erreur...

En fait, la fonction incriminée qui est appelée lorsque l'erreur se produit est "wrapper", qui est créée dans createWrapper (mais n'est pas appelée à cet endroit). En fait, ce qui se passe, c'est que vous avez attaché une fonction comme gestionnaire d'événement pour un élément, et la fonction n'existe pas réellement.

Si vous essayez de mettre des informations de débogage pour essayer d'identifier la fonction qui "n'existe pas", ajoutez vos messages d'alerte ou la sortie de la console Firebug à l'intérieur de la fonction wrapper entre les lignes 3871 et 3878.

3voto

TMN Points 11

Cela provoquera probablement une erreur :

Event.observe(myElement, 'click', myFunction(myParameters));

Tu devrais plutôt faire comme ça :

Event.observe(myElement, 'click', function() { myFunction(myParameters) });

2voto

Slavomir Points 327

Une solution très simple pour "undefined handler" de prototype.js L'erreur dans Prototype est juste... réparer le prototype. J'ai trouvé des conseils ici : https://prototype.lighthouseapp.com/projects/8886/tickets/407-ie7-i8-report-handler-is-null-or-not-an-object et ça marche vraiment.

Il suffit de trouver la ligne avec : handler.call(element, event); et remplacer par if (handler) handler.call(element, event) problème résolu avec le prototype 1.6.0.3 et les dernières versions :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X