JSF2如何根据浏览器版本设置html样式
我想在JSF 2应用程序中做的是根据浏览器版本设置适当的html样式,下面是示例代码:JSF2如何根据浏览器版本设置html样式,html,jsf,jsf-2,conditional-comments,omnifaces,Html,Jsf,Jsf 2,Conditional Comments,Omnifaces,我想在JSF 2应用程序中做的是根据浏览器版本设置适当的html样式,下面是示例代码: <!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]--> <!--[if IE 7]> <html class="lt-ie9 lt-ie8" lang="en"> <![endif]--> <!--[if IE 8]>
<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <!--<![endif]-->
在JSF2中如何做到这一点?最好/最简单的方法是什么
我在Omnifaces中发现了一些有趣的东西(
o:conditionalComment
),但它只允许有条件地加载整个css,这对我来说是无用的…您不应该有条件地声明
元素
如果使用Chrome或Firefox的人想访问你的网站怎么办
公认的做法是创建特定于IE版本的.css
文件,并使用IE宏有条件地加载此文件
e、 g
在IE6_styles.css中,您可以向html
类添加一些特定属性,也可以添加*html
hack。这种方法的优点在于,它可以在旧的IE浏览器中运行,但不会破坏现代浏览器
顺便说一句,这个例子来自David McFarland的“CSS:缺少的手册”。您不应该有条件地声明
元素
如果使用Chrome或Firefox的人想访问你的网站怎么办
公认的做法是创建特定于IE版本的.css
文件,并使用IE宏有条件地加载此文件
e、 g
在IE6_styles.css中,您可以向html
类添加一些特定属性,也可以添加*html
hack。这种方法的优点在于,它可以在旧的IE浏览器中运行,但不会破坏现代浏览器
顺便说一句,这个例子来自David McFarland的“CSS:missing manual”。这个例子并不适用于CSS文件。这是一种误解。从技术上讲,使用纯Facelets标记/组件实现您的需求是不可能的,因为这会导致格式错误的XML语法,从而导致Facelets编译错误
...
这是而不是XML。您知道,XML结束元素应该与XML开始元素在同一范围内。如果每个
在同一父XML元素中都有自己的
,那么它就是有效的XML。但这反过来又不是有效的HTML
只需在所有
标记上使用
。不要忘记对结束标记执行相同的操作
...
非常尴尬,但是(这种方法起源的地方)本身也很尴尬,依我看
可选地,您可以考虑创建自定义<代码> <代码>组件,它生成所需标记,以便您可以满足<代码>…<代码> >
仅对CSS文件是不正确的。这是一种误解。从技术上讲,使用纯Facelets标记/组件实现您的需求是不可能的,因为这会导致格式错误的XML语法,从而导致Facelets编译错误
...
这是而不是XML。您知道,XML结束元素应该与XML开始元素在同一范围内。如果每个
在同一父XML元素中都有自己的
,那么它就是有效的XML。但这反过来又不是有效的HTML
只需在所有
标记上使用
。不要忘记对结束标记执行相同的操作
...
非常尴尬,但是(这种方法起源的地方)本身也很尴尬,依我看
可选地,您可以考虑创建自定义<代码> <代码>组件,它生成期望的标记,以便您可以满足<代码>…<代码> >
< p>您可以用同一个类制作3个CSS(每个浏览器一个)。您的HTML代码将更加简单 在标题中,您可以使用特定的浏览器css,如下所示:<h:outputStylesheet library="css" name="ie_7.css" rendered="#{header['User-Agent'].contains('; MSIE 7')}" />
您可以使用同一类制作3个CSS(每个浏览器一个)。您的HTML代码将更加简单
在标题中,您可以使用特定的浏览器css,如下所示:
<h:outputStylesheet library="css" name="ie_7.css" rendered="#{header['User-Agent'].contains('; MSIE 7')}" />
OP的代码片段来自html5boilerplate.com。创建一堆.css文件是我不想做的,因为我得到的是一个大的css文件。如果没有选择,那么我就需要做大量准备特定css文件的工作。OP的代码片段来自html5boilerplate.com。创建一堆.css文件是我不想做的,因为我得到的是一个大型css。如果没有选择的话,那么我在准备特定的css文件时做了很多工作。从技术上来说,头嗅探不如条件注释可靠。有条件的评论在IE中100%可靠,而请求头可能被客户端欺骗/黑客。是的,你说得对,我学到了一些东西!关于BalusC注释的链接:标题嗅探在技术上不如条件注释可靠。有条件的评论在IE中100%可靠,而请求头可能被客户端欺骗/黑客。是的,你说得对,我学到了一些东西!关于BalusC评论的链接:谢谢,现在我使用了单h:outputText。我还将所有内容包装在f:view(名称空间定义)中。我对js使用了o:conditionalComment,包括。这很奇怪,但不需要结束,所有内容都正确呈现,为什么?:)我只是想在另一个问题中加入一个例子,在这里BalusC详细地解释了f:view。我试图解决同一个问题,但很难找到解决方案的所有部分。谢谢,现在我使用了单h:outputText。我还将所有内容包装在f:view(名称空间定义)中。我对js使用了o:conditionalComment,包括。这很奇怪,但不需要结束,所有内容都正确呈现,为什么?:)我只是想在另一个问题中加入一个例子,在这里BalusC详细地解释了f:view。我试图解决同样的问题,但很难找到解决方案的所有部分。