有时在我的 .jsp 中,我使用 User-Agent 来定义依赖于客户端浏览器使用的 .css 类或属性。
例子:
<c:set var="browser" value="${header['User-Agent']}" scope="session"/>
<c:if test="${(fn:contains(browser,'Safari'))||(fn:contains(browser,'Chrome'))}">
<c:set var="cellClass" value="cell-nonFF"/>
</c:if>
<c:if test="${(fn:contains(browser,'Safri') == false)&&(fn:contains(browser,'MSIE') == false)}">
<c:set var="cellClass" value="cell-FF"/>
</c:if>
<c:if test="${fn:contains(browser,'MSIE')}">
<c:set var="cellClass" value="cell-IE"/>
</c:if>
条件仅对 IE 有效,所以对于各种浏览器,我应该这样定义 User-Agent。
这样工作现在还可以。但我认为还有另一种更优雅或更稳定的方式,因为每个浏览器的 User-Agent 定义非常复杂,我们计划进一步支持移动浏览器。
Safari 4 检测为:Mozilla/5.0(Windows;U;Windows NT 5.1;en-US)AppleWebKit/528.16(KHTML,如 Gecko)版本/4.0 Safari/528.16
IE 6 检测为::Mozilla/4.0(兼容;MSIE 6.0 ;Windows NT 5.1;SV1;iOpus-IM;Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.1;SV1);InfoPath.1;.NET CLR 1.1.4322;.NET CLR 2.0.50727)
它是更稳定的选择吗?