2013-03-13 64 views
0

我知道你可以檢測你的瀏覽器是否爲IE或不使用下面的JSP代碼:JSP IE6檢測

request.getHeader("User-Agent"); 

但有反正我能檢測是否是IE6或沒有?

+1

爲什麼你認爲你需要知道?向瀏覽器提供多種內容類型通常會更好,並讓它使用最適合的內容類型。查詢終端用戶環境特定方面的其他原因?這爲最終用戶提供了哪些功能? – 2013-03-13 05:40:56

+0

我正在根據用戶瀏覽器填充一些UI數據(圖表)。對於IE6,由於UI支持很差,我想使用IE 6的標誌 – ComeRun 2013-03-13 05:50:51

+1

告訴後端它的情況。我剛剛倒退了10年嗎? – 2013-03-13 06:13:04

回答

3

使用this list它看起來像你正在尋找神奇的字符串是

"MSIE 6." 

所以這應該爲你工作:

boolean is_IE6 = user_agent.indexOf("MSIE 6.") > -1; 

或者放全部在JSP中:

<% boolean is_IE6 = request.getHeader("user-agent").indexOf("MSIE 6.") > -1; 
    if(is_IE6) { %> 
    Some IE 6 Thing 
<% } else { %> 
    Some non IE 6 Thing 
<% } %> 

有一個「更正確的方式」這樣做(禮貌地稱爲服務器端設備檢測)與一個名爲WURFL庫。 WURFL使用用戶代理和設備功能的擴展數據庫,並允許您根據使用這樣的代碼請求的設備上的HTTP請求做出響應(從他們documentation of the Java API拍攝):

WURFLHolder wurfl = (WURFLHolder)getServletContext().getAttribute(WURFLHolder.class.getName()); 

WURFLManager manager = wurfl.getWURFLManager(); 

Device device = manager.getDeviceForRequest(request); 

log.debug("Device: " + device.getId()); 
log.debug("Capability: " + device.getCapability("preferred_markup")); 

MarkUp markUp = device.getMarkUp(); 

String jspView = null; 

if (MarkUp.XHTML_ADVANCED.equals(markUp)) { 
    jspView = XHTML_ADV; 
} else if (MarkUp.XHTML_SIMPLE.equals(markUp)) { 
    jspView = XHTML_SIMPLE; 
} else if (MarkUp.CHTML.equals(markUp)) { 
    jspView = CHTML; 
} else if (MarkUp.WML.equals(markUp)) { 
    jspView = WML; 
} 
+0

最後一個合理的答案。謝啦 – ComeRun 2013-03-13 06:24:23

0

試試這個javascript代碼,

 if(/msie|MSIE 6/.test(navigator.userAgent)){ 
      alert("IE 6"); 
     } 
+0

我已經知道js解決方案。無論如何thnx – ComeRun 2013-03-13 05:49:14

+0

@RobG這是我的編輯。 JS標籤現在被刪除。 – 2013-03-13 06:03:50

1

您可以使用Conditional comments

例如:

<!--[if IE 6]>  
// IE 6 detected  
<![endif]--> 
+0

我正在尋找JSP解決方案 – ComeRun 2013-03-13 05:48:58

+0

@ComeRun:你用javascript標記你的問題。 – 2013-03-13 06:00:04

+0

@IswantoSan這是我的編輯。 JS標籤現在被刪除。 – 2013-03-13 06:04:13