RSS .92| RSS 2.0| ATOM 0.3
  • Inicio
  • Correo Web
  •  

    Comentarios condicionales: del derecho y del revés

    Julio 11, 2007 @ 20:45
    Dizque

    Internet Explorer es un navegador obsoleto (lamentablemente, solo en la segunda acepción del término). Su peculiar forma de interpretar las hojas de estilo nos obliga a suministrarle, con cierta frecuencia, CSS llenos de hacks. Y esos hacks no validan / son incómodos de mantener / no nos gustan (táchese lo que no proceda).

    Afortunadamente, los chicos de Microsoft incluyeron, a partir de la versión 5 de Internet Explorer, un método sencillo —e incluso aceptable— para detectar la versión del navegador y suministrarle contenidos apropiados a su edad mental.

    La sintaxis utiliza comentarios que solo son reconocidos por IE:

    <!-- Esto es un comentario HTML tradicional -->
    
    <!--[if IE]> 
        Solo Internet Explorer ve este contenido. 
        Para el resto de los navegadores, es un 
        comentario.
    <![endif]-->
    

    Así pues, podemos utilizar este tipo de comentarios para alimentar a la bestia negra con una hoja de estilos ad hoc.

    <!--[if IE]> 
        <link rel="stylesheet" type="text/css"
        href="/hoja/de/estilos/para/IE.css" />
    <![endif]-->
    

    No solo eso, también podemos destinar código únicamente a versiones concretas. Ya se ha escrito mil veces sobre el tema, así que no me extenderé. Los interesados podéis acudir a Comentarios condicionales para IE, en Diseñorama, o Sintaxi dels comentaris condicionals en a.css.

    Solo para «los otros»

    Y ahora, vayamos con el tema que me ha motivado a escribir esta notita: ¿qué hacer cuando queremos ocultar algo a Internet Explorer sin hacerlo invisible al resto de navegadores? Según Microsoft, usaremos lo que ellos llaman Downlevel-revealed Conditional Comments:

    <![if !IE]>
        <p>Gracias por no utilizar una patata 
        para navegar por mi web.</p>
    <![endif]>
    

    Pero por desgracia, la sintaxis propuesto no es válida. Ni como HTML, ni como árbitro de tercera. En cambio, utilizando esta otra

    <!--[if !IE]>-->
        <p>Gracias por no utilizar una patata 
        para navegar por mi web.</p>
    <!--<![endif]-->
    

    nuestro documento sigue siendo válido. Bravi!