Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: HTML: IE:n ehdolliset kommentit, conditional comments

Sivun loppuun

Merri [15.12.2006 17:23:43]

#

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!

Miten sivut kannattaa testata?

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.

Ehdolliset kommentit

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]-->

Käytännön esimerkki

<!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>

moptim [15.12.2006 19:35:51]

#

Kiitos!
Käyttötarkoitushan tälle on:

<!--[if ie]><a href="http://www.mozilla.org">Get Firefox!</a><![endif]-->

Grey [15.12.2006 20:23:34]

#

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-

Merri [16.12.2006 14:48:37]

#

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]-->

Metabolix [30.12.2006 11:08:55]

#

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.

Merri [30.12.2006 18:05:07]

#

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...

Juhko [06.01.2007 17:05:17]

#

Hieno, öö, voiko ehdollisilla kommenteilla ehtoilla muutakin kuin IE:tä?

Merri [06.01.2007 17:41:57]

#

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.

moptim [11.07.2007 11:17:26]

#

Grey, heh heh. Mihin muka Internetin Räjäyttäjää tarvisi, jos epäon IE?

Dude [11.11.2007 11:26:55]

#

Hmm... Vois teherä semmooset sivut että IEllä ei näkyy vain jotain get firefox ja muilla näkyy tavallisesti

Metabolix [03.12.2012 22:47:35]

#

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).


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta