2011-05-12 116 views
3

我有一個運行在JSF 2.0 + Richfaces 3.3.3上的web應用程序。 除了IE9以外,所有瀏覽器都很棒。IE9 + RichFaces渲染問題

在IE9不兼容模式(沒有問題),它看起來像這樣(忽略塗黑文本):(?沒見過) enter image description here

通知所有的組件是如何陷害和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問題的問題。

但我仍然不知道爲什麼會發生這種情況。如您所見,<link>標籤中的文件類型清晰標記爲type="text/css

另一個有趣的觀察 - 在Chrome開發者工具中檢查相同的對象,內容類型是text/css,所以也許它是一個IE9的錯誤。我很困惑...

+0

瀏覽器(js控制檯,開發人員工具)是否有任何錯誤? – 2011-05-12 13:24:44

+0

謝謝@Matt Handy。查看問題中的更新。 – Ben 2011-05-12 13:41:22

+0

你可以檢查服務器上的.css文件的MIME類型嗎?除非有人擺弄,否則我非常懷疑這是個問題。只是爲了記錄,鏈接標記應該是自閉的,因爲您有xhtml文檔類型(與元標記相同)。我也會試着去看看什麼有效,什麼不可以。像重新排序屬性這樣的東西,使類型出現在href屬性之前。誰知道?什麼事情都可能發生。這已經足夠奇怪了。 – Matt 2011-05-12 14:07:20

回答

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); 
} 
2

Richfaces 3.3早於IE9超出測試版,所以它可能會有一些兼容性問題,因爲構建可能沒有測試與IE9。

好消息是,您使用的是JSF 2,所以沒有理由不能升級到絕對支持IE9的Richfaces 4 Final。

這就是說你使用的JSF版本似乎也很重要。我正在使用mojarra,並且在版本2.0.4中,當它們重新裝入mojarra.ab(f:ajax)時,我遇到了許多Richfaces組件的問題。升級到2.1.1似乎已經解決了所有這些問題,現在我的生產中的Richfaces代碼對於IE9用戶來說表現良好。

我會建議你看看升級路徑,看看它是否可行。

+0

謝謝戴夫。儘管它不能直接解決我的問題,但知道這一點非常好:-) – Ben 2011-05-12 19:34:56

2

問題是,IE9需要http響應爲css文件定義了Content-Type標頭。 你的HTTP響應頭應該出現這樣的:

Content-Type: text/css 

可能的解決方法:您可以創建一個Servlet捕獲HTTP請求和響應裝飾用頭值Content-Type