Doctype-switch er ut, meta-tag er in

...og Microsoft står nok en gang i spissen for å gjøre webben en surere plass, særlig for oss som jobber "her". (Dette er ikke en anti- Microsoft "rant").

Hva er problemet nå?

Hva er egentlig problemet denne gangen? Jeg har jo nylig skrytt av IE8s lovende utsikter? Vel, ifølge A List Apart idag så har IE8-teamet fått med seg the Web Standards Project på å innføre en ny switch med meta-tagger.

Doctype-switching

Kjapt for de som ikke kjenner til det: En av problemene med å innføre webstandarder på slutten av 90- og starten av 2000-tallet var at de aller fleste sitene på nettet fungerte med gammel grisete kode. Å sette en standard-vennlig nettleser på disse sidene ville resultere kritiske feil. Dette gjorde det selvfølgelig vanskelig å overtale nettleserprodusentene om å "go standards".

For å komme rundt problemet ble Doctype-switching oppfunnet. Det fungerer ganske enkelt som: har du en gyldig Doctype i dokumentet behandler nettleseren dokumentet med webstandarder. Har du ikke det får du gammel behandling, eller såkalt " quirks mode". Som det presenteres både på A List Apart og IE-bloggen idag foreligger det nå en erstatning for denne switchen.

Doctype-switch i praksis: Når IE7 "ødela" nettet

Når IE7 ble sluppet i 2006 ble det et visst oppstyr fordi mange IE 6-kompatible nettsteder ble "ødelagt" i versjon 7. Som Roger Johansson forklarer har dette hovedsakelig tre grunner:

  1. XML-deklarasjonen som sender IE6 i " quirks mode" (med ikke 7-ern)
  2. Utstrakt bruk av CSS - hacks som ikke lengre virker i IE7 fordi feilene som hackene utnytter er utbedret
  3. Betingede kommentarer uten sjekk av versjonsnummer

De som fikk størst problemer med IE7 var med andre ord de som hadde implementert webstandarder på en halvveis måte. De som hadde implementert standardene på en måte som så lengre frem - dvs med et fåtall hacks, riktige betingede kommentarer og som benyttet standard-modus, ikke quirks mode - fikk kun en mindre oppdateringsjobb å gjøre.

For min egen del dreide det seg stort sett om zoom: 1; clear-klassene, og enkelte andre oppdateringer. For at verden skal gå fremover må vi tåle såppass.

Den nye switchen: meta-tagger

Argumentasjonen i de to nevnte artiklene tilsier at Doctype-switching ikke duger, fordi den ikke er finkornet nok. Disse menneskene ønsker seg en måte å vite nøyaktig hvilken versjon av en nettleser ett nettsted er laget for. Dette foreslår de at kan gjøres på følgende måte:

<meta http-equiv="X-UA-Compatible" content="IE=8;FF=3;OtherUA=4" />

Er det flere enn meg som hører ekkoet av "Optimized for Netscape 4.0 and 1024x768" ? Hva med browser-sniffing? Ok, dette er ikke fullt ut browser-sniffing, men det er langt mer brukeragent-spesifikt enn noe som er standard-basert burde være.

Hva skal vi med dette?

Så kan man spørre seg: Hva skal jeg med dette? Har vi ikke standarder for å unngå å tenke på hvilken versjon av den og den nettleseren jeg jobber mot? Er det ikke dette " progressiv enhancement" handler om?

For meg virker det helt bakvendt at jeg skal begynne å versjonere all koden min, og "låse" den til gitte versjoner av nettlesere. Jeg innser selvfølgelig at verden ikke er perfekt, og nettlesere har bugs. Men løsningen er ikke å låse koden til gitte nettleserimplementasjoner. Løsningen er å kode på en sånn måte at funksjonaliteten kommer til sin fulle rett i nettlesere som støtter det, og som degraderer til noe tilnærmet like verdifullt i andre nettlesere.

Denne teknikken, også kjent som "progressiv forbedring", tillater oss å la ny funksjonalitet automatisk dukke opp i nye nettlesere når de støtter dem.

Fra Microsofts ståsted

Denne teknikken gir derimot mening fra Microsofts ståsted. Når du utvikler en nettleser som får ny versjon med 5 års mellomrom så er det ikke noe umiddelbart problem å måtte ha med seg de 5 siste versjonenes renderingmotor i kodebasen. Slipper du én gang i året eller oftere, som for eksempel Opera, så blir problemet et noe annet. Om 15, Microsoft ha kanskje 5-6 renderingmotorer mens Opera skal dra med seg 14-15? Ikke særlig sannsynlig.

En annen grunn til at dette passer Microsoft er at IE er ment for å vise kode fra andre Microsoft-applikasjoner, som Word og Outlook, som selv produserer kode som er avhengig av de feilslåtte implementasjonene i IE. Det er nettopp disse verktøyene som vil dra nytte av å låse seg til en gitt versjon.

Webstandarder

Et annet poeng som tilsier at dette forslaget er rent vås er poenget med webstandarder. Dette forslaget vil i praktisk kun være av stor nytte for folk som ikke gidde å lære seg webstandarder. "Hvis du lærte deg HTML for 10 år siden burde det fortsatt være enkelt for deg å produsere websider". Hvorfor det? Hvorfor kan vi ikke i vår bransje ha baller til å kreve litt kompetanse for å utøve yrket? Neida, alle skal kunne lage websider.

Poenget jeg her ønsker å komme med er at folk som er opptatt av, eller i det minste kan noe om webstandarder vil aldri implementere et nettsted på en måte som avhenger av funksjonalitet man vet er feil (i forhold til standardene) med mindre man kan garantere at implementasjonen kun treffer nettleseren(e) som besitter buggen.

Det er nettopp derfor betingede kommentarer funker så bra - jeg angir ikke hvilken versjon av IE jeg er kompatibel med, men jeg angir en liten fiks til en bestemt versjon av IE som jeg vet besitter en feil.

Avslutningsvis ønsker jeg å sitere en kommentar fra A list apart-artikkelen, siden den treffer spikeren rett på hodet, og fordi den har litt attitude. Skal vi komme noen vei med disse webstandardene må vi ha litt attitude.

If you want to render my document, there is a defined set of standards. If you aren’t up to implementing those standards then make your own excuses, don’t expect me to update my document to suit.

Publisert 22. januar 2008 under webstandarder og nettlesere.

Muligens relatert