Pergunta

Às vezes, no meu .jsp, uso o agente do usuário para definir o que .CSS Class ou atributo para usar dependentemente do navegador do cliente.

exemplo:

<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>

Os condicionais são válidos apenas para o IE; portanto, para vários navegadores, devo definir o agente do usuário dessa maneira.

Dessa forma, o trabalho é ok. Mas suponho que exista outra maneira mais graciosa ou estável, porque a definição agente do usuário para cada navegador é muito mista e planejamos suportar ainda mais os navegadores móveis.

Safári 4 Detectado como: Mozilla/5.0 (Windows; U; Windows NT 5.1; En-US) Applewebkit/528.16 (KHTML, como Gecko) Versão/4.0 Safari/528.16
Ou seja 6 detectado como :: mozilla/4.0 (compatível; msie 6.0; windows nt 5.1; sv1; iopus-im; mozilla/4.0 (compatível; msie 6.0; windows nt 5.1; sv1); infopath.1; .net clr 1.1.4322 ; .NET CLR 2.0.50727)

É uma alternativa mais estável?

Foi útil?

Solução

Tente usar uma biblioteca como o jQuery para detectar o navegador, ele tem a detecção assada e facilitará sua vida, evitando a roda sendo reinventada.

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

Além disso, algo a conferir é a biblioteca Yahoo Yui, existem muitas ferramentas relacionadas ao CSS para ajudar a padronizar a experiência entre os navegadores.http://developer.yahoo.com/yui/reset/

Outras dicas

Em vez de fazer o switch no seu código (JSP aqui), você pode fazê -lo quando ler o arquivo CSS.

Você ganharia:

  • Apenas um condicional por página
  • Possibilidade de implementar o comutador como um filtro de servlet em vez de na página, para que possa ser genérico para todas as suas páginas.

Você teria :

  • um CSS que se aplica a todos os navegadores
  • Um CSS específico por navegador.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top