-
Morte ao IE6
Publicado em 12 de outubro de 2009 Sem comentários
Quantos sites que você mantêm tem suporte ao IE6? Espero que poucos… pois há na internet um movimento contra o browser obsoleto. É, já são quase nove anos de batalha. Nessa batalha, ele venceu o Netscape e muitos outros browsers… mas será que foi jogando limpo? Só sei que ele assassinou (e ainda assassina boa parte) dos standards que o W3C defende no dia a dia.Em alguns lugares onde trabalhei, ele já foi motivo de re-trabalho. Todos diziam: “Terminou? Agora tem que fazer funcionar no IE6“, ou até “Você sabe o que é POIE? Programação orientada a Internet Explorer“. Uma outra famosa: “Faça funcionar no IE6, e funcionará em todo o resto!“. Sim, na maioria dos casos. Mas a que custo? Acabar com todos os standards, e ter que gerar versões específicas de CSS
para cada um dos browsers? Eu me recuso a re-trabalhar na maioria das vezes. Sigo os standards, e faço adaptações apenas em seções muito cruciais para o funcionamento do trabalho.
Muitos sistemas e redes sociais já colocaram avisos quando você roda o browser empoeirado, pedindo que instale uma versão mais recente ou até mesmo um outro browser. E acho isso muito certo. Até quando vamos dar suporte a tecnologia antiga? Já é quase uma década de vida… aspirando a morte. Os computadores recém-adquiridos já vem com sistemas atualizados, e claro, com browsers atualizados. (Qualquer versão do Windows Vista vem com pelo menos o Internet Explorer 7). Qualquer distribuição decente tem um sistema de atualizações automáticas que alertará para o uso de uma versão atualizada do browser atual. Não seja antiquado! Atualize esse browser meu rapaz!
Eu faço minha parte: sigo os standards, e nego suporte até onde posso. Mas se você ainda não pode abandonar esse “aposentando browser”, e fez tudo seguindo os standars e testando apenas no Firefox, e na hora de rodar no windows liso (padrão de fábrica), você deve estar procurando ajuda agora. Infelizmente, ainda não podemos apenas abandonar os browsers da Microsoft, pois detem uma boa parte do público, mas podemos tomar algumas medidades “mágicas” que vão tornar o convívio mais pacífico. Vou deixar algumas dicas que podem poupar, e muito, seu tempo no projeto atual e permitir que você estude alguma coisa bem legal! Vamos lá
Doctype
Certo, se você seguiu os standards, não deveria ter esquecido isso, mas pode acontecer. Então, se você terminou o layout do html que renderiza bonitinho no FF (FireFox) mas não fica bom no IE6 (e provavelmente nos demais IE’s também), verifique se seu arquivo .html tem um cabeçalho parecido com esse:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Isso fará com que os browsers renderizem o HTML de acordo com o que você programou, e não conforme eles pensam ser o melhor jeito. Veja aqui nesse link uma lista completa de DOCTYPES que estarão de acordo com o que você programou. Isso ajuda a resolver alguns problemas bizarros, como quando o browser parece renderizar elementos fantasmas, como labels repetidos e texto sujo na tela (principalmente se você o gera usando javascript. Também já resolve boa parte dos problemas de layout decorrente de má interpretação de CSS.
Javascript
Não preciso nem dizer que usar frameworks como jQuery para programar seu Javascript é essencial num mundo cross-browser. Deixe para ele todas aquelas minúcias de cada browser. Exatamente, alguém, já esquentou a cabeça e perdeu vários fios de cabelo para que você pudesse ter noites melhores de sono.
Mas vou deixar uma dica aqui sobre um erro muito, mas muito chato mesmo. Chato porque esse é um erro comum, mas que passa desapercebido nas primeiras revisões que você faz no seu código. Esquecer as vírgulas nas definições de objetos. Tudo funciona muito bem no FF, porém, coisas estranham acontecem quando você roda no quase-defunto IE6. Quando você definir um objeto javascript:
var objeto = { atribute1: value1, atribute2: value2, atributeN: valueN }nunca esqueça de limpar a vírgula do último atributo, ou então, escrever a vírugula separadora de atributos no começo de cada linha:
var objeto = { atribute1: value1 ,atribute2: value2 ,atributeN: valueN }Assim, você evitar deixar a vírgula ali, sempre que copiar o atributo anterior para adicionar um novo irá manter a ordem dos mesmos. E assim, não vai perder várias horas, pois os IE’s raramente vão indicar onde ela está perdida… Esse padrão para atributos é adotado em projetos do EXTJS e em vários outros. Numa primeira olhada, a sintaxe parece estranha, mas te garanto: você vai adorar ter umas horinhas extras para dar aquela atenção ao seu feedreader invés de ter que caçar bugs!
Outro problemas não tão comum, mas que também pega desenvolvedores de surpresa: a instrução for (item in collection). Quando você utiliza a seguinte estrutura:
for (item in array) { // suas instruções }A sintaxe fica muito mais legível, e as coisas rodam execelentemente… menos no Internet Explorer! Então, tome cuidado, e vá já fazer aquele refactoring esperto para trocar os fors como o de cima pelo for tradicional do javascript.
CSS
Quando você utilizar frameworks CSS (Blueprint, grid960, etc), alguns atributos são resetados (com o quase onipresente reset.css que acompanham o kit de cada framework). Porém, alguns atributos css não são processados como deveriam no IE6 e em seus irmãozinhos. Principalmente o border-colapse, para as tabelas. Então, quando seu layout parecer estar de ressaca, tente setar o border-colapse: 0; antes de arrancar mais cabelos. Outra coisa que ajuda bastante na hora de adaptar CSS ao IE, é usar um seletor de ID invés de classe/elemento, principalmente quando se trata de elementos de formulários. Dê um nome exclusivo ao campo/input, e a chance dele renderizar corretamente no seu IE.Cuidado com os efeitos! Lembre-se que no IE, os valores para opacity são valores entre 0 e 100, e não entre 0 e 1.0 como na definição padrão (mais uma vez, um tiro contra os padrões e regras de boa vizinhança na Web).
E quando nem tudo tiver jeito
Bom, você que usa bastante a internet já deve ter percebido que muitos do grandes sites e redes já sabe da morte do browser, e convida os usuários a abandonar o barco antes que ele afunde, mostrando uma mensagem do tipo “É necessário atualizar seu navegador”, conforme a do Facebook, que você encontra clicando na imagem ao lado. Recomendo a você fazer o mesmo, pois algumas vezes não há erros, nem warning,s nem EXPLICAÇÕES! Seu sistema simplesmente não vai funcionar no IE6 (ou parecer um zumbi) simplesmente porque ele (ou seus criadores) não quiseram que funcionasse por tanto tempo assim. No meu último projeto, há uma função que não gera nenhum erro de processamento ou script, mas simplesmente não executa, misteriosamente sendo apenas mais uma instrução como todas as outras anteriores. Não vou ficar gastando o dinheiro de meu cliente! Vamos logo abandonar o defunto do IE6, e concentrar nossos esforços em trazer mais funcionalidades e compatibilidade. Coloque uma bela mensagem convidando seus queridos usuários a usar um broser mais atual ou melhor.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">


