IE8 e Compatibilidade

January 22nd, 2008 § 8 comments

Com o IE8 vindo por aí, com um renderizador completamente novo, é óbvio que uma das maiores preocupações dos desenvolvedores é o quanto essas mudanças vão ajudar–ou atrapalhar–a criação de novos sites e aplicativos e como fica a questão de compatibilidade para trás.

Ontem à noite, o Chris Wilson, um dos responsáveis pela nova versão do IE, publicou um longo texto sobre explicando como esses problemas serão tratados. Em resumo, o uso dos mais novos recursos de renderização agora será sujeito à escolha do usuário. Essa é a nova proposta da Microsoft, feita com o apoio do WaSP.

Antes de explicar como isso será feito, vale a pena lembrar do que aconteceu quando o IE6 foi introduzido. Naquela época, a Microsoft escolheu o mecanismo de troca de DOCTYPE para decidir entre dois modos de renderização: um modo que procurava emular as versões anteriores (quirks mode) e um modo que procurava seguir ao máximos os padrões (standards mode).

Isso funcionou bem por um tempo, mas há uma falha fundamental no processo: ele depende de uma atualização constante no suporte a padrões. Como o comportamento do IE6 só for atualizado cinco anos depois com a chegada do IE7, o resultado óbvio é que o standards mode do IE6 se tornou efetivamente o quirks mode do novo mecanismo de renderização. O resultado é que uma nova atualização trará os mesmos problemas de compatibilidade das versões anteriores e agora não há um forma lógica de separar que páginas devem renderizar de um ou outro jeito sem uma confusão generalizada. Ironicamente, essa situação é um resultado do próprio sucesso que os proponentes de padrões tiveram com suas campanhas.

De qualquer forma, a situação precisa ser remediada agora e a solução encontrada foi criar um flag que indique a vontade do desenvolvedor em usar a mais nova implementação dos padrões disponíveis no navegador. A proposta da Microsoft é inclusiva e pode ser implementada por qualquer navegador interessado. Para resumir a história toda, o desenvolvedor que deseje o uso máximo dos padrões e correções, usará o seguinte tag em suas páginas:

<meta http-equiv="X-UA-Compatible" content="IE=8" />

Isso indica que a página deve ser renderizada com o mecanismo do IE6. A falta do tag indicará que ela deve ser renderizada em compatibilidade retroativa.

O tag também pode ser usado para especificar múltiplas versões de naveagdores:

<meta http-equiv="X-UA-Compatible" content="IE=8;FF=3;Opera=9" />

Qualquer navegador não indicado deverá usar a renderização padrão. Como isso força a página ficar presa dentro daquela versão específica, há uma palavra-chave que permite indicar a última versão seja qual ela for:

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

O cabeçalho, sendo http-equiv, pode ser usado também como um header a ser enviado na requisição para acelerar o processamento da versão correta:

X-UA-Compatible: IE=8;FF=3

Obviamente, a proposta não caiu bem com proponentes estritos de padrões. Sam Ruby, em seu último texto, nota que já configurou seu site para sempre requisitar a versão superior para o IE.

Pessoalmente, minha primeira reação foi pensar que esse tipo de mudança introduz mais problemas do que soluções. Alguns minutos depois de ler o texto de Chris Wilson, dois novos texos do A List Apart apareceram em meu leitor de feeds e não fiquei surpreso ao ler que Eric Meyer, um dos mais antigos proponentes de padrões e alguém que trabalhou muito para fazê-los chegar ao ponto atual, teve a mesma reação. Em um longo texto para o site, ele explica seus motivos e dá uma explicação muito boa sobre o raciocínio por trás da solução encontrada. A explicação faz sentido em termos pragmáticos, mas deixa um gosto amargo na boca. O artigo é complementado por outro na mesma edição explicando em mais detalhes como tudo funciona.

Em última instância, a mudança demonstra um interesse por parte da Microsoft em lidar com problemas de compatibilidade e não fazer com que tudo pare de funcionar quando uma nova versão do IE sair. O fato de que somente o feedback do WaSP foi usado é um erro, na minha opinião, mas melhor do que simplesmente inventar algo e soltar na Web. Resta saber agora se os demais navegadores seguirão a estratégia.

§ 8 Responses to IE8 e Compatibilidade"

  • Meu sentimento a isso é o mesmo de sempre sobre o IE: a cada versão uma gambiarra padronizada pela MS.

    É impressionante a capacidade que ela tem de ficar forçando “padrões”. Uma pena, pois a MS poderia ajudar a melhorar e não a bagunçar mais ainda.

  • Não! IE de novo não!
    Como sempre a Microsoft quer atrapalhar tudo de novo. É impressionante como funcionam essas especificações e como cada browser renderiza as páginas ao seu modo.
    Como disse no Coding Dojo, estou desenvolvendo um site que só não é renderizado de acordo com as especificações, no IE.
    Simplesmente, sem comentários.

  • Samir says:

    Se a proposta é diminuir os hacks de css e javascript, quem sabe agora vai, o IE7 já melhorou bem nesse aspecto.

    Mas como já é tradição na Microsoft, eles sempre dão um jeito de reiventar a roda, faz todo aquele marketing em cima com seu “novo-padrão-de-mercado”, no final das contas acaba mais atrapalhando do que ajudando…

    Viva o firefox! 😀

  • Ronaldo says:

    Rafael, pelo menos dessa vez eles tiveram o bom senso de consultar o WaSP, que, pelo visto, foi quem realmente deu a solução. Eu ainda preferia um feedback mais geral mas provavelmente não ia sair decisão nenhuma até o IE ser solto com alguma coisa pior.

    Lucas, eu acho que nunca vamos ficar livre disso. Esse tipo de manobra é sempre algo que funciona a curto prazo e quando o IE9 chegar e o Firefox 4 estiver implementando CSS 3 totalmente, vai ser a mesma porcaria. Mas pelo menos é um passo.

    Samir, pelo que deu para entender, vai diminuir. Mas só para o próprio IE já que sempre vão haver diferenças de renderização entre navegadores.

  • […] Ferraz – IE8 e Compatibilidade: Em última instância, a mudança demonstra um interesse por parte da Microsoft em lidar com […]

  • […] Portabilidade de dados – Internet Explorer 8 e o novo indicador de versão – Paradigmas de desenvolvimento […]

  • Mairus says:

    É isso aí, pessoal.
    Vamos preparando os “IFs”

Leave a Reply

Your email address will not be published. Required fields are marked *

What's this?

You are currently reading IE8 e Compatibilidade at Superfície Reflexiva.

meta