我有一个在JSF 2.0 + Richfaces 3.3.3上运行的网络应用程序。 在除IE9之外的所有浏览器上看起来都很棒。
在没有兼容模式的IE9中(有,没问题)它看起来像这样(忽略黑屏文本):
注意如何构建所有组件并忽略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
任何人都有任何想法? 谢谢!
更新
通过使用network
选项卡捕获数据包,对“开发人员工具”进行了一些研究。
使用Type = text/html
而不是text/css
发送css文件。根据{{3}}问题,我想这就是问题所在。
但我仍然不知道为什么会这样。如您所见,文件类型在type="text/css
标记中明确标记为<link>
。
另一个有趣的观察 - 在Chrome开发者工具中检查相同的对象,内容类型是text/css
,所以也许它是一个IE9错误。我很困惑......
答案 0 :(得分:3)
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);
}
答案 1 :(得分:2)
Richfaces 3.3早于IE9进入测试阶段,因此可能存在一些兼容性问题,因为构建可能没有针对IE9进行测试。
好消息是你正在使用JSF 2,所以没有理由你不能升级到Richfaces 4 Final,它肯定支持IE9。
据说你使用的JSF版本似乎也很重要。我正在使用mojarra,在版本2.0.4中,当我们使用mojarra.ab(f:ajax)重新加载时,我遇到了许多Richfaces组件的问题。升级到2.1.1似乎已经解决了所有这些问题,现在我的Richfaces代码在生产中对IE9用户表现良好。
我建议您查看升级路径,看看它是否可行。
答案 2 :(得分:2)
问题是IE9需要css文件的http响应定义了Content-Type
标头。
您的http响应标头应如下所示:
Content-Type: text/css
可能的解决方案:您可以创建一个Servlet
来捕获http请求并使用Content-Type
值修饰响应标头。