stringtranslate.com

Comentario condicional

Los comentarios condicionales son declaraciones condicionales interpretadas por las versiones 5 a 9 de Microsoft Internet Explorer en código fuente HTML . Se pueden utilizar para proporcionar y ocultar código a y desde estas versiones de Internet Explorer. Los comentarios condicionales no son compatibles con Internet Explorer 10 y 11 .

Los comentarios condicionales en HTML [1] aparecieron por primera vez en el navegador Internet Explorer 5 de Microsoft, aunque ahora ya no se admiten. En Internet Explorer 10, los comentarios condicionales en HTML no se admiten cuando la página está en modo estándar (modo de documento 10). [2] Los comentarios condicionales de JScript se introdujeron en Internet Explorer 4 y continuaron siendo compatibles en Internet Explorer 10, en modo estándar o modo de compatibilidad.

Ejemplos

A continuación se muestra un ejemplo sencillo que demuestra cómo funcionan los comentarios condicionales.

<!--[si es IE 9]> <script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.js" integrity="sha512-BWbLJlfp8hzXlxT6K5KLdxPVAj+4Zn2e4FVq5P7NSFH/mkAJ18UiZRQUD4anR3jyp0/WYkeZ0Zmq5EWWrDxneQ==" crossorigin="anonymous" referrerpolicy="sin referencia"></script> <![endif]-->

Sintaxis

Hay dos tipos de "comentarios condicionales": downlevel revelado y downlevel oculto .

La sintaxis básica de cada tipo de comentario se muestra en la siguiente tabla. El primer comentario que se muestra es el comentario HTML básico, que se incluye con fines comparativos y para ilustrar las diferentes sintaxis que utiliza cada tipo de comentario condicional.

El HTML que se muestra dentro del bloque de sintaxis en cada uno de los comentarios condicionales denota cualquier bloque de contenido HTML, incluido el script. Ambos tipos de comentarios condicionales utilizan una expresión condicional para indicar si el contenido dentro del bloque de comentarios debe analizarse o ignorarse. La expresión condicional se forma a partir de una combinación de característica, operador y/o valor, según la característica. La siguiente tabla muestra las características admitidas y describe los valores que admite cada característica.

La siguiente tabla describe los operadores que se pueden utilizar para crear expresiones condicionales.

Comentario condicional oculto de nivel inferior

A continuación se muestran dos ejemplos de un comentario condicional "oculto de nivel inferior":

<!--[si es IE 8]> <link href="ie8only.css" rel="hoja de estilo"> <![endif]-->

o

<!--[si es lte IE 7]> <style type="text/css"> /* CSS aquí */ </style> <![endif]-->

La directiva del primer ejemplo permitirá a IE 8 leer el archivo CSS especificado, mientras que IE 7 o versiones anteriores de IE lo ignorarán. Los navegadores distintos de IE también lo ignorarán porque parece un comentario HTML estándar. La etiqueta del segundo ejemplo permitirá que las versiones de IE 5.0 a 7 lean el estilo CSS interno. Con diferentes usos de esta etiqueta, también puede identificar IE 6, IE 5 o versiones de IE que sean más nuevas (mayores) o más antiguas (menores) que una versión especificada.

Comentario condicional revelado a nivel inferior

A continuación se muestra un ejemplo de un 'comentario' condicional "revelado de nivel inferior", que no es un comentario (X)HTML en absoluto, a pesar del nombre engañoso, y utiliza la sintaxis predeterminada de Microsoft:

<![if !IE]> < link  href = "non-ie.css"  rel = "hoja de estilo" > <![endif]>

Este ejemplo muestra contenido que debería estar expuesto únicamente a navegadores que no sean IE, ya que la condición se evalúa como "falsa" en IE (y, por lo tanto, el contenido se ignora), mientras que las etiquetas en sí no se reconocen (y, por lo tanto, se ignoran) en navegadores que no sean IE. Esto no es HTML ni XHTML válidos.

Microsoft reconoce que esta sintaxis no es un marcado estandarizado, [4] con la intención de que otros navegadores pasen por alto estas etiquetas y expongan el contenido en el medio. Para garantizar el cumplimiento de los estándares del W3C, algunos desarrolladores web utilizan una técnica alternativa [5] para los comentarios condicionales revelados a nivel inferior:

<!--[if !IE]>--> < link  href = "non-ie.css"  rel = "hoja de estilo" > <!--<![endif]-->

Aunque su estructura es algo confusa, esta sintaxis específica es válida para (X)HTML y resulta útil para secciones condicionales destinadas específicamente a navegadores que no sean IE; si la condición se evalúa como verdadera (por ejemplo, si se escribe código que se va a mostrar en navegadores que no sean IE y en algunas versiones de IE), IE mostrará el -->presente antes del contenido HTML. Este problema se resuelve fácilmente anteponiendo <!al inicial -->lo siguiente:

<!--[si es IE 6]><!-->Este código se muestra en navegadores que no sean IE y en IE 7 o superior.<!--<![fin del si]-->

<!Los navegadores que no son IE ignoran el extra , y también lo ignora IE independientemente de la condición: si es falso , se ignora todo lo dentro del comentario condicional, y si es verdadero , la etiqueta resultante <!-->no se reconoce y, por lo tanto, se ignora.

Comentarios condicionales en JScript

A partir de Internet Explorer 4, existe un mecanismo propietario similar para agregar comentarios condicionales dentro de JScript , conocido como compilación condicional. [6]

Ejemplos de código:

< script > /*@cc_on  document.write("Estás usando IE4 o superior"); @*/ </ script >

También había varias variables predefinidas, [7] aunque ya no se puede confiar en ellas porque Microsoft modificó el motor JScript de IE6 con XP SP3 y ahora informa como . Como resultado, a continuación se puede ver una forma posible de detectar la versión de Internet Explorer mediante compilación condicional:@_jscript_version == 5.7

<script> / * @ cc_on @if (@_jscript_version == 11)  document.write("Estás usando IE11 con un modo de documento más antiguo");  @elif (@_jscript_version == 10)  document.write("Estás usando IE10");  @elif (@_jscript_version == 9)  document.write("Estás usando IE9");  @elif (@_jscript_version == 5.8)  document.write("Estás usando IE8");  @elif (@_jscript_version == 5.7)  document.write("Estás usando IE" + (!window.XMLHttpRequest ? 6 : 7));  @elif (@_jscript_version == 5.6)  document.write("Estás usando IE6");  @elif (@_jscript_version == 5.5)  document.write("Estás usando IE5.5");  @elif (@_jscript_version < 5.5)  document.write("Estás usando una versión anterior a IE5.5");  @else  document.write("Estás usando una versión desconocida de IE");  @end @*/ </ script > 

Sin embargo, la compilación condicional ya no es compatible con el modo Estándar de Internet Explorer 11. [8]

Véase también

Enlaces externos

Referencias

  1. ^ "Acerca de los comentarios condicionales". Microsoft Corporation. Archivado desde el original el 13 de octubre de 2008. Consultado el 24 de octubre de 2007 .
  2. ^ "Análisis de HTML5 en IE10". Microsoft Corporation. 6 de julio de 2011. Archivado desde el original el 20 de abril de 2016.
  3. ^ "Función GetProductInfo (sysinfoapi.h)". Microsoft Corporation. 2 de febrero de 2023. Consultado el 15 de julio de 2023 .
  4. ^ "MSDN — Acerca de los comentarios condicionales". Archivado desde el original el 23 de abril de 2007. Consultado el 3 de enero de 2007 .
  5. ^ "Comentarios condicionales válidos revelados a nivel inferior | 456 Berea Street". Archivado desde el original el 19 de agosto de 2014. Consultado el 29 de diciembre de 2007 .
  6. ^ "Compilación condicional". Microsoft Corporation. Archivado desde el original el 6 de septiembre de 2008. Consultado el 29 de diciembre de 2007 .
  7. ^ "Variables de compilación condicional". Microsoft Corporation. Archivado desde el original el 17 de octubre de 2012.
  8. ^ "Declaración @cc_on (JavaScript)". Microsoft Corporation. Archivado desde el original el 4 de abril de 2016. Consultado el 17 de agosto de 2015 .