Dass der Herr Internet Explorer zuweilen ein etwas verschobenes Weltbild hat kennt man ja als leidgeprüfter Webentwickler. So auch heute - am Beispiel Javascript zu sehen.
Man könnte ja meinen, dass folgendes, banales Konstrukt:
var foo = function()
{
// empty
};
alert(typeof foo);
einem function vor den Latz knallt.
Denkste.
Was in Firefox, Chrom(e|ium), Safari [1], Opera ...eben in jedem durchdachten Browser die Erwartungen erfüllt, quittiert der Herr Internet Explorer mit object. Nun mag der geneigte Javascript-Entwickler ja kontern, dass in Javascript eben auch alles ein Objekt, und es deswegen auch nicht völlig falsch ist.
Richtig.
So lange richtig, bis jQuery daherkommt und bei obigem Beispiel mittels jQuery.isFunction(foo); ein false anstatt true zurückliefert. Das kann den kompletten Programmablauf versauen - hat es auch. Das Schlimme daran ist jedoch, dass der Fehler nicht unbedingt bei jQuery zu suchen ist, sondern letztenendes an obiger typeof-Prüfung, die beim IE eben anders ausfällt als erwartet. jQuery hat schlichtweg keine Chance zweifelsfrei zu erkennen, ob es sich nun um eine Funktion oder ein Objekt handelt. Dies ist zwar mittlerweile dort auch so dokumentiert, hilft aber so auch nicht weiter, ausser, dass man möglichst auf jQuery.isFunction(); verzichten sollte oder sich nen Workaround für den IE überlegt.
| [1] | Ich verlinke nicht auf Apple-Seiten. |