quarta-feira, outubro 21, 2009

Padrão é uma coisa tão boa que cada um quer ter o seu!

Não está entre as minhas especialidades o "desenvolvimento Web", apesar de ter passado num exame de certificação da Microsoft sobre o assunto. Um par de anos atrás fiz duas "aplicações Web" usando Web Forms; nestes dois casos testei a aplicação principalmente dentro do Visual Studio, o que significou testar com IE6. Na época fiz uma tentativa rápida de acessar com o Firefox e vi uma série de problemas. Como no meu caso dava para impor o uso com o IE6 (eram aplicações de uso interno), deixei para lá. Mas sempre sobrou uma pontinha de descontentamento e curiosidade.

Estou alterando uma destas aplicações e agora está mais difícil de ignorar os problemas: vários deles ocorrem no IE8 quando ele não está no modo compatibilidade. Aliás, é uma brincadeira divertida abrir uma página, ficar ligando/desligando o modo compatibilidade e ficar observando o que muda.

O que me surpreendeu foi ter um problema com um tag que parece trivial: <hr /> (linha horizontal). No meu caso, eu tinha especificado uma cor. E a cor não aparece no IE8 com modo de compatibilidade desligado. Após uma busca intensa achei a seguinte página:
http://www.wickham43.net/horizontalrule.html

Onde alguém teve a paciência de testar os vários atributos de <hr /> em vários browsers. O resultado é assustador: aparentemente não existem dois browsers que façam exatamente a mesma coisa. Quem quiser conferir é só acessar a página acima com vários navegadores.
Para quem estiver interessado no caso específico da cor do <hr />:
  • o IE costumava usar o atributo "color" (que não é mais considerado pelo IE8 "nativo")
  • outros browser usam "background-color"
  • os parâmetros "height" e "border" (ou a ausência deles) afetam a apresentação
A forma de obter uma linha que apareça de forma consistente em todos os browser consiste em especificar estar quatro atributos:

<hr style="color: blue; height: 2px;" />

É claro que novas versões de browser saem a toda hora e não será surpresa se algum deles resolver interpretar este comando de forma diferente.

Um comentário:

Fábio disse...

Para identificar esses tipos de incompatibilidades, uma boa pedida é o http://www.quirksmode.org/.