Frage

Ein sehr Nischenproblem:

Manchmal (in 30 % der Fälle) erhalte ich in Zeile 3877 der Bibliothek „prototyp.js“ (Version 1.6.0.2 von Google: http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.2/prototype.js).

Jetzt habe ich auf dieser Seite eine Google Map und verwende die Prototype Window-Bibliothek.

Das Problem tritt in IE7 und FF3 auf.

Dies sind die Informationen, die FireBug gibt:

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

Ich bin auf eine lokale Version von Prototypjs umgestiegen und habe in der fehlerhaften Methode (createWraper) etwas Debugging hinzugefügt, aber das Debugging erscheint nie vor dem Fehler ...

Ich habe gegoogelt und eine weitere Erwähnung des Fehlers in derselben Zeile gefunden, aber keine Antwort, also poste ich sie hier, wo vielleicht eines Tages jemand eine Antwort haben wird :).

War es hilfreich?

Lösung

Ich habe gerade herausgefunden, dass dieser Fehler auch auftritt, wenn Sie bei Ihrem Beobachteraufruf versehentlich die Klammer stehen lassen:

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

anstatt

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

Andere Tipps

Dies wird wahrscheinlich einen Fehler verursachen:

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

Sie sollten es stattdessen so machen:

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

Ich bin zu einer lokalen Version von prototypejs gewechselt und habe etwas Debugging hinzugefügt in der fehlerhaften Methode (createWraper), aber das Debuggen wird nie angezeigt vor dem Fehler...

Tatsächlich ist die störende Funktion, die aufgerufen wird, wenn der Fehler auftritt, „wrapper“, die in „createWrapper“ erstellt (aber dort nicht aufgerufen) wird.Im Grunde genommen haben Sie eine Funktion als Ereignishandler für ein Element angehängt, die Funktion existiert jedoch nicht.

Wenn Sie versuchen, Debug-Informationen einzugeben, um herauszufinden, welche Funktion „nicht existiert“, fügen Sie Ihre Warnmeldungen oder die Firebug-Konsolenausgabe in die Wrapper-Funktion zwischen den Zeilen 3871 und 3878 ein.

Wirklich einfache Lösung für „undefinierter Handler“ aus Prototyp.js Fehler im Prototyp ist nur...Prototyp reparieren.Ratschläge habe ich hier gefunden: https://prototype.lighthouseapp.com/projects/8886/tickets/407-ie7-i8-report-handler-is-null-or-not-an-object und es funktioniert tatsächlich.

Finden Sie einfach die Zeile mit:handler.call(element, event); und durch ersetzenif (handler) handler.call(element, event)Problem mit Prototyp 1.6.0.3 und neuer gelöst :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top