Ehdolliset kommentit ovat HTML:ssä Microsoftin oma tekniikka, joka on parhaaksi havaittu tapa korjata Internet Explorerin vanhojen versioiden vikoja haittaamatta toisten selainten toimintaa. Käytännössä aina, kun haluat korjata asioita, jotka vanha Internet Explorer tekee toisella tavalla kuin muut selaimet, voit määrittää sille oman koodin. Voit myös tehdä toisin päin: estää IE:tä näkemästä koodia, joka tarjoillaan muille selaimille.
Ehdolliset kommentit ovat tuettuja IE:n versiosta 5 versioon 9. Kommentin voi sijoittaa mihin tahansa kohtaan HTML-dokumentissa DOCTYPEn jälkeen. Suositelluin tapa käyttää ehdollisia kommentteja on erillisen tyylitiedoston määritteleminen.
Ehdolliset kommentit eivät toimi CSS-tiedostossa!
Sivuja tehdessä kannattaa noudattaa sivujen kehittämistä tietyillä selaimilla ennen kuin siirtyy testaamisessa seuraavaan vaiheeseen. Siispä suositelluin tapa toteuttaa sivut on:
Voit oman maun mukaan testata myös muilla selaimilla. Usein tällä tavoin saat kuitenkin katettua noin 99.9% kaikista sivuillasi kävijöistä mahdollisimman vähällä vaivalla.
Näyttää koodin vain Internet Explorerissa: <!--[if IE]>HTML-KOODI TÄHÄN<![endif]--> Näyttää koodin kaikilla muilla kuin Internet Explorerilla: <!--[if !IE]>-->HTML-KOODI TÄHÄN<!--<![endif]--> Versioiden määrittäminen ------------------------ Internet Explorer 5.0 ja 5.5 <!--[if IE 5]>HTML-KOODI TÄHÄN<![endif]--> Internet Explorer 5.0 -pääversio <!--[if IE 5.0]>HTML-KOODI TÄHÄN<![endif]--> Internet Explorer 5.5 -pääversio <!--[if IE 5.5]>HTML-KOODI TÄHÄN<![endif]--> Internet Explorer 6 <!--[if IE 6]>HTML-KOODI TÄHÄN<![endif]--> Internet Explorer 7 <!--[if IE 7]>HTML-KOODI TÄHÄN<![endif]--> Ehdot useammalle selainversiolle -------------------------------- Kaikki versiot ennen versiota 6 <!--[if lt IE 6]>HTML-KOODI TÄHÄN<![endif]--> Kaikki versiot ennen versiota 7 <!--[if lt IE 7]>HTML-KOODI TÄHÄN<![endif]--> Myös yhtä suuri kuin löytyy: versio 6 tai aiempi <!--[if lte IE 6]>HTML-KOODI TÄHÄN<![endif]--> Tulevaisuuteenkin voi panostaa: versio 6 tai uudempi <!--[if gte IE 6]>HTML-KOODI TÄHÄN<![endif]-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fi"> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>Hyvin yksinkertainen testisivu</title> <link rel="stylesheet" href="index.css" type="text/css" /> <!--[if IE 7]><link rel="stylesheet" href="index_ie7.css" type="text/css" /><![endif]--> <!--[if lte IE 6]><link rel="stylesheet" href="index_ie6.css" type="text/css" /><![endif]--> </head> <body> <h1>Testisivu</h1> <p>Kokeile vaikka asetella eri värit eri selaimille CSS-tiedostoihin.</p> </body> </html>
Kiitos!
Käyttötarkoitushan tälle on:
<!--[if ie]><a href="http://www.mozilla.org">Get Firefox!</a><![endif]-->
Alla eräs rumilus. Ihmetelkää :-P
<!--[if ie]><style type="text/css"> a.i {display: none;} </style><![endif]--> <a href="http://www.microsoft.com" class="i">Get IE!</a> <!--[if ie]><a href="http://www.mozilla.org">Get FireFox!</a><![endif]--> <!--Get life!-->
-Grey-
Korjasin uudemman kerran muille-kuin-IE:lle tagit. Nyt se on oikein, mutta aika sekavan näköinen :)
<!--[if IE]><h1>Käytät Internet Exploreria!</h1><![endif]--> <!--[if !IE]>--><h1>Et käytä Internet Exploreria!</h1><!--<![endif]-->
Törmäsinpä tässä tällaiseenkin, että pitäisi saada yksi osa IE 6.0:lle ja vanhemmille ja toinen IE 7.0:lle ja muille. Nähtävästi IE 7.0 pitää laittaa omanaan ja !IE omanaan, muuten a) IE 7.0 näyttää ylimääräisen tekstin "-->" itselleen näkyvän sisällön alusta tai b) Firefox kommentoi koko sivun pois, kun siinä on hienosti tuki sisäkkäisille kommenteille, eli aloitus- ja lopetusmerkkejä pitäisi olla yhtä monet.
Sinulla on todennäköisesti jokin moka kirjoittamassasi koodissa, laitatko ylös niin voi katsoa mitä olet tehnyt? Ehdolliset kommentit eivät ainakaan voi olla sisäkkäisiä, käytännön esimerkkini tuossa koodivinkin lopussa näyttää kyllä tuon kaipaamasi tavan erotella IE7 ja aiemmat toisistaan.
Ja kappas, olen vahingossa kirjoittanut HTML 4:ää enkä XHTML:ää. Korjataanpa kun kerran XHTML doctype on...
Hieno, öö, voiko ehdollisilla kommenteilla ehtoilla muutakin kuin IE:tä?
Ei, mutta siihen ei pitäisi olla kovin suurta tarvettakaan. Jos haluat välttämättä tehdä niin, niin se kyllä onnistuu JavaScriptillä, esim. Operan voi tunnistaa tekemällä tämmöisen tarkistuksen:
if (window.opera) { koodi tässä }
Eri asia sitten onko se järkevää. Yleensä sivut pystyy kyllä toteuttamaan sillä tavoin, että ne toimivat akselilla Firefox/Opera/Safari ihan hyvin. IE7:kin yllättelee välillä ja toimii ilman lisäkikkoja.
Grey, heh heh. Mihin muka Internetin Räjäyttäjää tarvisi, jos epäon IE?
Hmm... Vois teherä semmooset sivut että IEllä ei näkyy vain jotain get firefox ja muilla näkyy tavallisesti
Merri kirjoitti:
Ehdolliset kommentit eivät ainakaan voi olla sisäkkäisiä,
Tämä ei itse asiassa pidä paikkaansa. Ehtoja voi laittaa sisäkkäin näin:
<!--[if lt IE 8]> Käytät <![if gte IE 7]>vanhaa<![endif]> <![if lt IE 7]>ikivanhaa<![endif]> selainta! <![endif]-->
Tietenkin nämä sisemmät ehdot koskevat vain IE:tä. Jos ensimmäinen ehto on !IE, sisäkkäisistä ehdoista ei ole hyötyä, koska IE ei käsittele sisempiä kuitenkaan (ja muut selaimethan eivät ymmärrä koko ehtoja).
Aihe on jo aika vanha, joten et voi enää vastata siihen.