html 条件注释怎么区分IE与非IE
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html 条件注释怎么区分IE与非IE相关的知识,希望对你有一定的参考价值。
一个浏览器软件应该包含两个部分,一是命令的解释,二是输出屏幕。IE是WINDOWS自带(捆绑)的浏览器,但有些所谓的浏览器只有第二部分,所以必须借用某个浏览器先行解释。而另一些浏览器象IE一样,也包含了这两个部分,即有自己的核心。所以,那些使用了IE进行解释的浏览器就是IE核心的,而使用别的浏览器进行解释的就是非IE核心的。 参考技术A <!--[if !IE]>
。。。。
<![endif]-->本回答被提问者采纳
<!--[if IE]> 条件注释在 Facelets 中呈现 HTML 转义
【中文标题】<!--[if IE]> 条件注释在 Facelets 中呈现 HTML 转义【英文标题】:<!--[if IE]> conditional comments are rendered HTML-escaped in Facelets 【发布时间】:2012-01-24 08:46:47 【问题描述】:我正在尝试使用 IE 条件注释来声明 CSS 资源:
<h:outputStylesheet name="common.css" library="css" />
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="#resource['css:ie.css']" />
<![endif]-->
但是,这似乎不起作用。我在生成的 HTML 输出中看到了这一点:
<link type="text/css" rel="stylesheet" href="/context/faces/javax.faces.resource/common.css?ln=css" />
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="/context/faces/javax.faces.resource/ie.css?ln=css"/>
<![endif]-->
没有条件注释它可以正常工作。我没有使用上下文参数javax.faces.FACELETS_SKIP_COMMENTS
。这是如何引起的,我该如何解决?
【问题讨论】:
生成的 HTML 中有没有?在浏览器中打开页面,右键单击并查看源代码。 不,这很奇怪,我在 IE 或 FireFox 中都找不到它。 【参考方案1】:这确实不起作用,因为 Facelets 会隐式地对评论内容进行 HTML 转义。最好的办法是将其放在<h:outputText escape="false">
中,如下所示:
<h:outputText value="<!--[if IE]><link rel="stylesheet" type="text/css" href="/#resource['css:ie.css']" /><![endif]-->" escape="false" />
然而,这是一条丑陋的路线。 The OmniFaces JSF utility library 有一个 <o:conditionalComment>
就是为了这个目的:
<o:conditionalComment if="IE">
<link rel="stylesheet" type="text/css" href="#resource['css:ie.css']" />
</o:conditionalComment>
与具体问题无关,您并没有真正以正确的方式使用library
属性。它应该标识一个常见的“主题”,而不是文件所在的子文件夹,只需将该子文件夹放在 name
属性中即可。另见What is the JSF resource library for and how should it be used?
<h:outputStylesheet name="css/common.css" />
<o:conditionalComment if="IE">
<link rel="stylesheet" type="text/css" href="#resource['css/ie.css']" />
</o:conditionalComment>
【讨论】:
outputText 解决方案工作得很好,但 param 解决方案仍然不起作用,我不知道为什么。【参考方案2】:我建议
<h:outputText value="<!--[if IE]> " escape="false"/>
<link rel="stylesheet" type="text/css" href="#request.contextPath/faces/javax.faces.resource/ie.css?ln=css" />
<h:outputText value=" <![endif]-->" escape="false"/>
因此,您只需转义一小段代码,#request.contextPath 就会按预期工作
【讨论】:
以上是关于html 条件注释怎么区分IE与非IE的主要内容,如果未能解决你的问题,请参考以下文章