Javascript: Inkompatibilität im ECMAScript 5th Edition
Die dritte IE9 Platform Preview zeigt eine Inkompatibilität. Sie führt dazu, dass beispielsweise Websites, die jQuery verwenden, nicht mehr korrekt funktionieren. Ursache für den Fehler sei die erweiterte ES5-Implementierung, mit der einige Details von ES5 erstmals umgesetzt wurden, so Microsofts Javascript-Spezialist Allen Wirfs-Brock(öffnet im neuen Fenster) .
Das Problem entsteht bei der Übergabe von Werten an Object.prototype.toString, wenn zuvor nicht geprüft wird, ob der Wert Null oder Undefined ist. Genau das macht jQuery an einer Stelle - es übergibt einen ungeprüften Wert an Object.prototype.toString. Das führt in der IE9-Preview zu einer Fehlermeldung, da sie sich an den ES5-Standard hält. Dieser schreibt nämlich vor, dass beim Aufruf der Funktion mit einem Wert von Null oder Undefined eine Fehlermeldung ausgelöst wird. In früheren ECMAScript-Versionen war das nicht so. Bislang wurde in diesen Fällen stattdessen ein globales Objekt übergeben, bei Browsern das DOM-Objekt Window. Da dies aber ein Einfallstor für Sicherheitsprobleme darstellen kann, sieht ES5 hier eine Änderung vor.
Das Problem lässt sich in jQuery zwar leicht lösen. Laut Wirfs-Brock ist das aber kein gangbarer Weg im Hinblick auf die zahlreichen lokal gespeicherten jQuery-Versionen, die weiterhin Probleme verursachen. Er schlägt daher eine Änderung am ES5-Standard vor, bei der ein passender String zurückgegeben wird - und keine Fehlermeldung.
Mozilla, Google und Apple haben Wirfs-Brocks Überlegungen rasch zugestimmt, so dass der Standard geändert wird, wenn auch etwas anders, als von Wirfs-Brock zunächst vorgeschlagen.
Microsoft nutzt den Fall, um sein Bekenntnis zu Standards zu betonen. Microsoft hatte früher oft auf proprietäre Technologien im Web gesetzt. Mit dem IE9 will das Unternehmen dagegen einen standardkonformen Browser anbieten.



