我有一个运行在JSF2.0+RichFaces3.3.3上的web应用程序。在除IE9之外的所有浏览器上看起来都很棒。
在没有兼容性模式的IE9 (With,无问题)中,它看起来如下所示(忽略黑屏文本):

注意所有组件是如何被框架化的,CSS是如何被忽略的(没有看到吗?)
JSP看起来如下(只有相关内容):
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<link rel="stylesheet" href="css/pageStyle.css" type="text/css" >
</head>
<body>
...
</body>css位于C:\apache\tomcat\webapps\MyWebApp\css\pageStyle.css。
有人知道吗?谢谢!
UPDATE通过使用network选项卡捕获数据包,使用“开发工具”进行了一些研究。css文件用Type=text/html而不是text/css发送。根据this问题,我想这就是问题所在。
但我还是不知道为什么会这样。如您所见,文件类型在type="text/css标记中清楚地标记为<link>。
另一个有趣的观察--在Chrome工具中检查同一个对象,内容类型是text/css,所以可能是IE9错误。我很困惑..。
发布于 2011-09-06 21:26:37
RichFaces 3.x不支持IE9 (也没有引入它的计划),请参阅以下主题:http://community.jboss.org/thread/156720
你可以升级到RF 4,
或实现筛选器以强制IE9在兼容性模式下运行:
public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException {
HttpServletResponse resp = (HttpServletResponse) response;
resp.addHeader("X-UA-Compatible", "IE=EmulateIE8");
chain.doFilter(request, resp);
}发布于 2011-05-12 16:04:02
RichFaces3.3早于IE9的测试版,所以很可能会出现一些兼容性问题,因为构建可能没有经过测试,而不是IE9。
好消息是您使用的是JSF 2,所以您没有理由不能升级到RichFaces4Final,它确实支持IE9。
尽管如此,您使用的JSF版本似乎也很重要。我正在使用mojarra,在2.0.4版本中,当使用mojarra.ab (f:ajax)重新加载Richfaces组件时,它们出现了问题。升级到2.1.1似乎解决了所有这些问题,现在我有了用于IE9用户的Richfaces代码。
我建议你看看升级路径,看看它是否可行。
发布于 2011-09-06 12:57:16
问题是,IE9需要为css文件定义Content-Type头的http响应。您的http响应头应该如下所示:
Content-Type: text/css可能的解决方案:您可以创建一个Servlet来捕获http请求并用Content-Type值装饰响应头。
https://stackoverflow.com/questions/5978407
复制相似问题