Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: HTML, PHP: Ehdollisten kommenttien generointi (IE 5–9)

Metabolix [16.10.2008 00:24:10]

#

Internet Explorerin versiot 5–9 sisältävät tuen HTML-koodin ehdollisille kommenteille, joilla voi viritellä HTML-koodia niin, että sivusta tulee erilainen näillä IE:n versioilla (tai osalla versioista). Tietoa itse ehdoista on Microsoftin sivuilla, ja aiheesta on jo aiemmin julkaistu koodivinkki, joten en kerro asian taustoista sen tarkemmin. Todettakoon kuitenkin, että oikeiden kommenttitagien kirjoittaminen vaatii tarkkuutta ja virheitä tulee melko helposti. Siksi tein PHP-funktion, joka kommentoi annetun tekstin halutulla tavalla.

Funktio

<?php
/**
 * Palauttaa tekstin IE:n ehdollisen kommentin sisällä
 *
 * @param string|boolean $ie ehto tekstinä, true vain IE:lle tai false vain muille selaimille
 * @param string $str ehdollisen kommentin sisään asetettava teksti
 * @return string kommentoitu teksti
 */
function ie_cc($ie, $str)
{
    // Jos tekstiä ei näytetä IE:ssä, kommenttitagit suljetaan, jotta se näkyy muille. (<!-- kommentti -->)
    if ($ie === false) {
        return "<!--[if !IE]>-->" . $str . "<!--<![endif]-->";
    }
    // Arvo true tarkoittaa ehtoa "IE" (mikä tahansa IE 5.0:sta alkaen).
    if ($ie === true) {
        $ie = "IE";
    }
    // Nyt kommenttitagia ei suljeta. Vain ehdon määräämä IE käsittelee sisällön, muille se on kommentti.
    return "<!--[if $ie]>" . $str . "<![endif]-->";
}
?>

Käyttöesimerkki

<?php
// Vain IE:lle (mille tahansa 5.0:sta alkaen).
echo ie_cc(true, "<p>Hanki Firefox!</p>");

// Vain muille
echo ie_cc(false, "<p>Älä hanki Firefoxia!</p>");

// Vain IE:n versioille ennen versiota 7.0
echo ie_cc("lt IE 7.0", "<p>Jos Firefox ei kelpaa, niin hanki edes uudempi IE!</p>");

Meitzi [19.10.2008 15:16:07]

#

Toisaalta, jos käytössä on PHP niin eikös se ole sama tutkia mikä selain käyttäjällä on ja muokata tulostetta sen mukaan.

Metabolix [19.10.2008 20:54:15]

#

Selain voi ilmoittaa olevansa mitä vain tai vaikka jättää ilmoittamatta. Ehdolliset kommentit ovat siis sikäli varmempi (joskin vain IE-spesifinen) tapa, ja onhan tällä skriptillä mahdollista generoida koodia myös staattisille sivuille, jotka sitten siirretään valmiina HTML-koodina palvelimelle.

Vastaus

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

Tietoa sivustosta