¿Cómo usar los comentarios condicionales de Internet Explorer en JSF?
internet-explorer jsf-2 (3)
Este es mi archivo de código fuente en Eclipse:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
</body>
</html>
Cuando veo esto en IE9, muestra el texto:
<!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]-->
Si veo la fuente dice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
</body>
</html>
¿Alguna razón por la que la fuente haya cambiado una vez que el Servlet de Faces la haya servido?
Esto funciona:
<h:outputText escape="false" value="<!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]-->"></h:outputText>
Problema conocido, la representación JSF escapa a los comentarios. Puede resolverlo utilizando <h:outputText escape="false">
y las entidades HTML. También puede usar OmniFaces <o:conditionalComment>
para resolverlo de una manera más agradable. Vea también el sitio de escaparate:
El
<o:conditionalComment>
hace un comentario condicional. Los comentarios condicionales son una característica específica de IE que permite al desarrollador comentar (salir) bloques de HTML dependiendo de si el cliente está utilizando IE y, de ser así, qué versión. A menudo se ven en combinación con las hojas de estilo CSS como:
<!--[if lte IE 7]> <link rel="stylesheet" href="ie6-ie7.css" /> <![endif]-->
Sin embargo, Facelets presenta el contenido del comentario que se escapó en HTML, lo que lo hace inutilizable.
<!--[if lte IE 7]> <link rel="stylesheet" href="ie6-ie7.css" /> <![endif]-->
Además, si el
javax.faces.FACELETS_SKIP_COMMENTS
contextojavax.faces.FACELETS_SKIP_COMMENTS
se establece entrue
, incluso no se representará en absoluto. Necesitaría solucionar esto con un feo<h:outputText escape="false">
.
<h:outputText value="<!--[if lte IE 7]><link rel="stylesheet" href="ie6-ie7.css" /><![endif]-->" escape="false" />
Este componente está diseñado para resolver este problema.
<o:conditionalComment if="lte IE 7"> <link rel="stylesheet" href="ie6-ie7.css" /> </o:conditionalComment>
Tenga en cuenta que no puede usar esto con
<h:outputStylesheet>
ya que se reubicaría implícitamente como hijo directo de<h:head>
.
Utilicé f: textualmente, mucho más limpio.
Por ejemplo
<f:verbatim>
<!--[if gte IE 8]>
<script type="text/javascript">
//<![CDATA[
/** Javascript **/
//]]>
</script>
<![endif]-->
</f:verbatim>
Referencia de etiqueta JSF Core
Nota: esta etiqueta está en desuso desde JSF 2.0 (diciembre de 2009). Está destinado solo para JSP