0

有时在我的 .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)

它是更稳定的选择吗?

4

2 回答 2

1

无需在代码中进行切换(此处为 jsp),您可以在读取 css 文件时进行切换。

您将获得:

  • 每页只有一个条件
  • 可以将开关实现为 Servlet 过滤器而不是在页面中,因此它可能对您的所有页面都是通用的。

你将会拥有 :

  • 一个适用于所有浏览器的 CSS
  • 每个浏览器一个特定的 CSS。
于 2009-10-07T12:22:47.827 回答
1

尝试使用像 Jquery 这样的库来检测浏览器,它具有检测功能,并且通过避免重新发明轮子,让您的生活变得更加轻松。

http://docs.jquery.com/$.browser.name

另外值得一试的是 Yahoo YUI 库,那里有很多与 CSS 相关的工具来帮助标准化跨浏览器的体验。 http://developer.yahoo.com/yui/reset/

于 2009-10-09T07:28:57.613 回答