Globale linker

HTML

Conditional comments

En av de vanligste operasjoner som foretas på en webside er å bestemme brukerens nettlesertype. Ved å bestemme nettlesertypen kan vi skreddersy innhold for de forskjellig nettlesertypene, slik at vi er sikre på at innholdet vil vises riktig i den enkelte brukers nettleser. Og metodene for dette er mange. De fleste bruker enten serverside eller clientside script, og de har begge sine fordeler og ulemper. Vi skal her istedet se på conditional comments, eller betingede kommentarer som jeg har oversatt det med, som er en alternativ måte for å bestemme nettlesertype. Conditional comments kan med fordel brukes istedetfor script, og er enklere å lære og bruke.

Conditional comments har vært tilgjengelig siden Microsoft® Internet Explorer 5, men bruken er slett ikke begrenset til kun Internet Explorer. Vi skal se på eksempler som viser hvordan vi kan skreddersy innholdet for både kompatible og ikke-kompatible nettlesere. Betingede kommentarer gjør det enklere for utviklere å lage nettsider som degraderes elegant i de litt eldre nettleserne.

Conditional comments eller betingede kommentarer har en stor fordel fremfor det å bruke scripting for å bestemme nettlesertype. Når en nettleser som ikke gjenkjenner betingede kommentarer støter på betingede kommentarer, vil ikke denne nettleseren hverken laste ned eller vise det innholdet som står mellom betingede kommenater. Dette vil spare både båndbredde og maskinressurser.

Når man bruker script for å bestemme nettlesertype, skrives ofte en blokk med kode for hver nettlesertype. Dette fordi støtten for scriptspråk og DOM er forskjellig i de forskjellige nettleserne. Ved å bruke betingede kommentarer kan script-logikk deles opp i mindre og enklere kode-blokker, noe som er enklere å vedlikeholde og holde orden på.

Conditional comments blir prossesert i nedlastings og tolkefasen, slik at bare det innholdet som er målrettet mot den nettleseren som laster ned siden blir lastet inn i brukerens nettleser. Conditional comments kan også brukes sammen med andre metoder får å bestemme nettlesertypen.

Kommentar type Syntax eller mulig verdi
Standard HTML kommentar <!-- kommentar innhold -->
ikke-kompatibel skjult <!--[if betingelse]> HTML <![endif]-->
ikke-kompatibel vist <![if betingelse]> HTML <![endif]>

Standard HTML kommenaterer er gjenkjent av de aller fleste nettleserne. Innholdet mellom kommentar-taggene blir fullstendig ignorert av nettleserne. En betingelseskommentar kan inneholde HTML, eller annet innhold som f.eks. script eller css, som skrives mellom betingelses kommentarene. Begge de forskjellige typene betingelses kommentarer bruker en betingelsesuttrykk, som er gjenkjent i IE5 eller senere. Hvis betingelsen er sann vil innholdet mellom kommentartaggene vises.

En kombinasjon av operatorer, verdier og egenskaper kan brukes til å skrive en betingelseskommentar:

  Syntax Kommentar
egenskap IE Streng. Den eneste som for tiden er støttet er strengen "IE", som tilsvarer Internet Explorer.
versjon nummer Et tall eller desimaltall som angir nettleserens versjonsnummer. For mer informasjion, se Version Vectors.
operator ! Ikke
sammenligning lt Mindre enn
sammenligning lte Mindre enn eller lik
sammenligning gt Større enn
sammenligning gte Større enn eller lik

Eksempler:

For IE5-nettlesere:
<!--[if IE 5]>
<p>Du bruker en Internet Explorer versjon 5 nettleser</p>
<![endif]-->

For IE6-nettlesere:
<!--[if IE 6]>
<p>Du bruker en Internet Explorer versjon 6 nettleser</p>
<![endif]-->

For IE-nettlesere, versjon 5 eller senere:
<!--[if IE]>
<p>Du bruker en Internet Explorer versjon 5 eller senere nettleser</p>
<![endif]-->

For IE-nettlesere større enn versjon5:
<!--[if gt IE 5]>
<p>Du bruker en Internet Explorer versjon 6 eller senere nettleser</p>
<![endif]-->

For IE-nettlesere større enn eller lik versjon 5:
<!--[if gte IE 5]>
<p>Du bruker en Internet Explorer versjon 5 eller senere nettleser</p>
<![endif]-->

For ikke IE-nettlesere:
<![if !IE]>
<p>Du bruker en annen nettleser enn Internet Explorer</p>
<![endif]>

Ikke kompatibel skjult innhold

Følgende eksempel viser en betingelses kommentar som skjuler innholdet mellom kommentarene for nettlesere som ikke er IE5:

<!--[if IE 5]>
<p>Welcome to Internet Explorer 5.</p>
<![endif]-->

Fordi de fire første og tre siste kommentarene er identiske til vanlig HTML-kommentarer, vil alle nettlesere som ikke støtter betingelses kommentarer overse innholdet mellom <!-- og -->.

Ikke kompatibel vist innhold

Følgende eksempel viser en betingelses kommentar som viser innholdet mellom kommentarene for nettlesere som ikke er IE5:

<![if !IE 5]>
<p>Please upgrade to Internet Explorer version 5.</p>
<![endif]>

Når vi sammenligner denne typen kommentar med en vanlig HTML-kommentar, så legger vi merke til at det ikke er noen "--" tegn etter åpnings "<!". Det er heller ingen "--" før avslutnings ">". Derfor blir både <![if !IE 5]> og <![endif]> ignorert av ikke kompatible nettlesere.
En ikke-kompatibel nettleser gjenkjenner altså ikke en ikke-kompatibel betingelse-kommentar. Den vil derfor ikke gjøre noe med disse "taggene" og vil vise innholdet mellom "taggene". De vil altså ignorere kommentarene men ikke HTL'en mellom taggene.

I Internet Explorer 5 eller senere, vil betingelses-kommentaren gjenkjennes. Hvis det som står i betingelsen er sant vil det som står mellom kommentartaggene vises i nettleseren, mens hvis betingelsen ikke er sann vil innholdet ignoreres.