Problem med IE6 bug? Gør IE6 til IE7
september 29th, 2008. Kategori: Browser bugs and fixesDe mange bugs i IE6 giver problemer. Heldigvis er IE 6 ved at blive faset ud til fordel for IE7, men lige pt. bliver den forældede alligevel IE6 browser brugt af op mod 25 % af brugerne.
Men energien til at lave de store krumspring alene for IE6 brugerne er dalende blandt webudviklere. Også fordi der er rigeligt med andre browsere at tage hensyn til, især med Google Chrome og IE 8 lurende i horisonten. Og også fordi både Safari og Firefox er i hastig fremgang.
Den ultmiative løsning på IE6 problemet
Heldigvis er den ultimative løsning på problembarnet IE6 inden for rækkevidde.
Dean Edwards har lavet et JavaScript, der får IE6 til at opføre sig som IE7 på en lang række områder som f.eks.:
- Understøttelse af gennemsigtige png’er
- Understøttelse af gentagne klasser
- Understøttelse af standard W3 box model
- Forbedret nedarvning
- Understøttelse af min-height og max-height
Se hele listen på Dean Edwards side.
Selve koden og dokumentationen kan findes på Google Code. Hent JavaScript der løser IE6 problemer.
IE6 til IE7. For og imod løsningen
Selvom IE7 stadig er langt fra W3C’s standarderner, er det trods alt en bedre browser en IE6. Ved at få IE6 til at opføre sig som en IE7, har vi kun en IE browser at tage hensyn til, når vi udvikler (hvilket også kan være rigeligt 😉 ).
Du kan være heldig at alle dine problemer med IE6 løses med et enkelt snuptag. I så fald er løsningen meget hurtig, i forhold til at fikse alle IE6 bugs på traditionel vis.
Selve scriptet fylder kun 11kb. Altså langt mindre end et gennemsnitligt stykke grafik.
En af ulemperne ved denne simple løsning er at scriptet løber dom modellen igennem, og dermed tager det altså en smule længere tid at rendere siden. Men da koden er pakket ind i et “conditional statement”, rammer denne gene rammer selvfølgelig kun IE6 og IE5 brugere.
JavaScriptet bliver kørt ved opdatering af siden. Dvs at der i visse tilfælde kan være problemer med sider, der bliver mikroopdateret med AJAX.
Under alle omstændigheder er det værd at teste denne løsning. En sådan test kan gennemføres på ca. 5 minutter, og hvis løsningen virker, er den super hurtig.
Se diskussionen for og imod løsningen i denne tråd på multimedieform.dk
Praktisk eksempel på brug af IE6 til IE7 -scriptet
Gem IE7.js filen i eksempelvis “minJSMappe”, og indsæt følgende linjer i head-tagget på din html:
<head>
<!–[if lt IE 7]>
<script src=”minJSMappe/IE7.js” type=”text/javascript”></script>
<![endif]–></head>
Det fremgår ikke, om du også skal gemme “blank.gif”. Men den er muligvis nødvendig for at fikse IE6’s problemer med gennemsigtige png’er.
Vær dog opmærksom på at gennemsigtige png’er skal navngives helt bestemt for at løsningen virker. Så hvis der også er problemer med dette, så se denne tråd på multimedieforum.dk, for nogle meget smartere løsninger på det specifikke problem.
4 Responses to “Problem med IE6 bug? Gør IE6 til IE7”
By Martin Nielsen on okt 2, 2008
Det er jo ikke mindre end halv-genialt, de 11kb ekstra kan hurtigt forsvares i forhold til et IE6 only css, og diverse andre krumspring.
Tak for linket 🙂
By Anders Saugstrup on nov 15, 2008
Hej Niels og tusind tak for linket!
Kan du hjælpe en novice på JavaScriptområdet med at forklare mere konkret hvad der skal sættes ind og hvor i koden.
Jeg har prøvet mig lidt frem, og det lader til at virke, men vil gerne være på den sikre side! 🙂
By Niels on nov 15, 2008
Hej Anders.
Jeg har lige tilføjet en praktisk beskrivelse. Hvis der stadig er uklarheder, så sig endelig til. 🙂
Bemærk lige at jeg også har tilføjet et link i afsnittet oven over, til en diskussion af fordele og ulemper ovre på multimeideforum.dk.
Bruger du løsningen i forhold til en Worpress installation?
By Anders Saugstrup on nov 15, 2008
Tak, Niels! 🙂
Ja, jeg var lige ved at tro at jeg havde overset sådan en fejl i en kundes wordpress tema, men det viste sig heldigvis ikke at være tilfældet alligevel. Det var noget indsat kode i et bestemt indlæg, som ødelagde billedet.
Jeg må vente til en anden god gang med at afprøve løsningen så. 🙂