Cheatah: Javascript Netscape anpassen (aktuelle Woche)

Beitrag lesen

Hi,

Darüber läßt sich ganz gewiß streiten. Soweit ich aus der Doku erkennen kann, wurde beim Versionssprung zur JavaScriptversion 1.3. an der Funktionalität geschraubt.

ja - aber schon davor gab es Unterschiede:

http://developer.netscape.com/viewsource/goodman_2k.html
"""
The getYear() method, however, is a can of worms, [...]; getYear() changed its behavior between Navigator 2 and 3.

In Navigator 2, getYear() returns an integer value of a date object's year minus 1900. [...]

Starting with Navigator 3, however, the value returned by getYear() changes for dates other than those in the 1900s. [Weitere Beschreibung hier s. von Dir zitierte Doku.]

One of the by-products of the ECMAScript effort (as written in the ECMA-262 [http://www.ecma.ch/stand/ecma-262.htm] standard) is a more Y2K-friendly Date object. [...] It did so by defining getYear() and setYear() as they existed in Navigator 2.
"""

Soll heißen: Die Interpretation in Netscape 3 wurde als fehlerhaft erkannt und rückgängig gemacht. Ich halte es nicht für falsch, dieses Chaos nicht durch "künstliche Abwärtskompatibilität" in einem <script language="JavaScript1.2"> aufrechtzuerhalten. Bei push() sieht die Sache anders aus: Hier wurde ein zuvor sinnvolles Verhalten durch ein unterschiedliches, aber ebenfalls sinnvolles Verhalten ausgetauscht, nicht ein (durch Unbedachtheit entstandener) Bug entfernt.

Der IE verhält sich hier entsprechend der bis JavaScript1.2 geltenden Funktionalität.

_In_ JavaScript 1.2, nicht _bis_ :-)

Netscape 6 dagegen verhält sich wie lt. Doku vorgesehen und gibt die erwarteten Werte zurück.

Das finde ich ausnahmsweise sehr schade. Hast Du das gleiche mal mit "JavaScript1.0" probiert? Ich habe hier leider keinen Netscape 6 installiert, kann es also nicht testen.

Also wurde mit Version 1.3 einfach getFullYear hinzugenommen und der Fehler als Feature deklariert :-)

Nein, das vorherige Feature als Fehler erkannt ;-) Du hast aber recht, man kann drüber streiten. Ich halte die ursprüngliche und jetzige Definition für richtig und jede andere für unsinnig und fehlerprovozierend - wie kevinwiedener auch gemerkt hat, ohne es zu merken *g*

Cheatah