Microsoft feilaktig beskyldt for Y2K-problem

Flere utviklere har kontaktet digi.no og fortalt at datofeilene som har oppstått på en del nettsteder kun skyldes dårlige kunnskaper om JavaScript hos webutviklere.

Etter at Microsoft fikk skylden for år 2000-problem som gjaldt JavaScript og Internet Explorer-nettlesere, har digi.no mottatt flere henvendelser fra sine kyndige lesere.

Les den opprinnelige saken her:


Derfor blir det år 192000 i Internet Explorer

Det viser seg at, i dette tilfellet, kan ikke skylden legges på dårlig håndverk fra Microsofts side.

Å utvikle i JavaScript er ingen rett-fram-oppgave. Det finnes i dag to eller tre varianter (et definisjonsspørsmål) av programmeringsspråket, i tillegg til forskjellige oppdateringer av disse, noe som gjør at utviklerne må ta spesielle hensyn når de utvikler nettsteder beregnet for brukere med forskjellige typer nettlesere.

La oss først ta en titt bakover i historien. JavaScript 1.0 (eller LiveScript som det på den tiden het) ble første gang introdusert av Sun og Netscape i 1995. Kort tid etter kom Netscape med støtte for språket i selskapets Navigator 2.0-nettleser.

Etter noe tid kom Microsoft med sin implementasjon av JavaScript i Internet Explorer 3. Implementasjonen ble kalt JScript. JScript var opprinnelig basert på publisert dokumentasjon fra Netscape, så i utgangspunktet burde ha vært identisk med JavaScript 1.0. Dessverre var ikke dette tilfelle. Det var noen få egenskaper Netscape ikke publiserte, samtidig som noe av funksjonaliteten ikke ble gjenskapt korrekt av Microsoft. Derfor kunne oppførselen til de to variantene ved enkelte tilfeller være noe ulik.

I 1997 ble Netscapes JavaScript standardisert av ECMA (European Computer Manufacturer Association). Standarden ble kalt ECMAScript 1.0. I 1998 ble standarden adoptert av ISO (International Standards Organization) og IEC (International Electrotechnical Commission). ECMAScript 2.0 ble godkjent av ECMA i 1998.

Til tross for denne standariseringen, er det altså forvirring rundt utviklingen av skriptet.

Som digi.no skrev tirsdag er bruken av rutinen getYear() opphavet til de fleste problemene der årstallet er generert ved hjelp av JavaScript. Men utviklere som har vært i kontakt med digi.no, mener at Microsoft ikke har implementert denne rutinen på feil måte. Går man inn på Netscape sitt utviklernettsted, finner en raskt ut at getYear() finnes i to varianter. Den ene, som ble implementert i JavaScript 1.2 og tidligere, returnerer årstallet med to siffer hvis årstallet er mellom 1900 og 1999, og med fire siffer dersom årstallet er høyere eller lavere enn dette.

Den andre varianten, som er implementert i Netscapes nye JavaScript 1.3, leverer årstallene alltid med det antall år det er gått siden 1900. Årstall før 1900 blir representert med et negativt tall. Dette er ikke henhold til ECMAScript-standarden som JScript - ifølge Microsoft - er bakoverkompatibel med.

Utviklerne som kontaktet digi.no ønsker å påpeke at disse rutinene og hvordan de tolkes i de forskjellige nettleserne er godt dokumentert både hos Microsoft og hos Netscape - i tillegg til svært mange andre steder.

De mener derfor at dette resultatet av overgangen til år 2000 kun skyldes late utviklere som ikke har giddet å slå opp hvordan rutinene virker. I tillegg antas det at mange utviklere kun benytter én type nettleser når koden testes.

Til toppen