Альтернатива User-Agent в .jsp - PullRequest
       10

Альтернатива User-Agent в .jsp

0 голосов
/ 07 октября 2009

Иногда в моем .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; ru-ru) 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)

Это более стабильная альтернатива?

Ответы [ 2 ]

1 голос
/ 09 октября 2009

Попробуйте использовать библиотеку, такую ​​как Jquery, для обнаружения браузера, в него встроено обнаружение, и это облегчит вашу жизнь, избегая повторного изобретения колеса.

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

Также стоит обратить внимание на библиотеку Yahoo YUI, в которой есть множество инструментов, связанных с CSS, которые помогают стандартизировать работу браузеров. http://developer.yahoo.com/yui/reset/

1 голос
/ 07 октября 2009

Вместо того, чтобы переключаться в вашем коде (jsp здесь), вы можете сделать это, когда читаете файл css.

Вы получите:

  • Только одно условие на страницу
  • Возможность реализовать переключатель в качестве фильтра сервлетов, а не на странице, чтобы он мог быть общим для всех ваших страниц.

Вы бы получили:

  • один CSS, который применяется ко всем браузерам
  • один конкретный CSS для браузера.
...