Jørgen Farum Jensen skrev:
> Jeg går sådan set ud fra, at MS med IE7 vil fikse mange af
> de ting, hvor tolkningen af css-egenskaberne også i IE6 i
> standard modus er mangelfulde eller forkerte i forhold til
> w3c-standarden.
Det er også intentionen fra IE-teamet - men det er svært at vide
præcis hvor meget der bliver fikset.
> Mit eksempel var vist dobbelt-margin bug'en på float'ede
> elementer
Det eksempel jeg kommenterede havde kun pseudokode ("Dine IE-only
formdeklarationer") - og det var et svar på et generelt spørgsmål
om browserspecifik css-kode.
Derfor mener jeg det er uheldigt at angive "if lt IE 7" som en
generel løsning, uden at forklare hvad if-sætningen egentlig dækker
over.
>> Måske, men de er ofte mere usikre.
> Jeg ved ikke hvad du mener med usikre, men et hack
> er et hack, noget der ikke burde være der.
Der er to grunde til at jeg mener at et hack er mere usikkert end
en conditional.
For det første kan et hack påvirke alle browsere, mens en
conditional kun rammer IE/Win. Det kan selvfølgelig tænkes at en
browserproducent vælger at implementere understøttelse af IE-
conditionals, men så vidt jeg er orienteret er det ikke tilfældet,
og det er heller ikke planlagt.
For det andet er hacks følsomme over for browseropdateringer. Man
kan gå ind på en liste og tjekke hvilke browsere der rammes af et
givent hack i dag, men så snart en af browserne kommer i en ny
version - eller en helt ny browser kommer på banen - skal man
tjekke hvordan hacket nu fungerer. I IE6 og tidligere fungerer
child-selektoren fx ikke - derfor har mange angivet IE-specifik
kode med "html>body #foo". Når IE7 nu får fikset problemet med
childselektoren, virker den pludselig i IE. Det er fint hvis den
kode der hidtil har været skjult for IE7 så også virker i IE7, men
det kan man bare ikke være sikker på.
En conditional comment er (hvis den bruges korrekt) langt mere
stabil, fordi den bygger på versionsnumre. Det eneste man skal
huske, er at undgå at sætte lighedstegn mellem "nyeste IE-version i
dag" og "nyeste IE-version".
> Men i henseende til mange eksempler, inklusive det
> netop nævnte, er denne typisk: Hvis MS retter både
> dobbelt-margin-bug'en og den forkerte tolkning at
> #box er barn af html, vil værdien i denne hack
> jo ikke blive læst af IE7, men fortsat af IE6
Korrekt - men så skal man have tiltro til at MS enten fikser begge
problemer (hacket + css-fejlen) eller ingen af problemerne.
Hvis man bruger en conditional, er det let at ændre betingelsen når
man finder ud af om IE har rettet css-fejlen - man behøver kun at
bekymre sig om selve css-fejlen, og ikke om hack-understøttelsen.
Det er også hurtigt at indføre et nyt tjek, hvis der skulle være
brug for specialkode direkte til IE7.
> Men i hovedsagen er jeg da enig med dig, man skal
> selvfølgelig være nogenlunde klar over konsekvenserne
> af den kode man skriver. Det gælder vel her som altid...
Netop. Og mit hovedargument for at anbefale conditionals er da også
at det er let at afgøre hvilke browsere der rammes af det - det kan
simpelthen aflæses direkte i if-sætningen. Med et hack skal man
enten kunne huske hvilke browsere det rammer i hovedet, eller også
slå det op fra gang til gang.
Hacks kan ikke undgås helt, da andre browsere end IE/Win jo også
kan have brug for specialkode (det ville egentlig være fedt hvis FF
og Opera havde deres egen conditional-understøttelse). Men i det
omfang at man kan bruge en conditional i stedet for et hack, vil
jeg foretrække conditionalen.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på
http://usenet.dk/netikette/citatteknik.html