Busca

fim de expediente

by rafa soares

Tag

problemas

Internet Explorer 6 FML (ah, vá!)

Antes de mais nada, para os desentendidos: FML = Fuck My Life. Preciso explicar mais? Não? Ótimo, continuemos.

Algumas estatísticas dizem que o IE6 ainda corresponde a 18% dos acessos, mas a verdade é: 105% dos clientes de um web designer/developer ainda usam essa velharia e se recusam a sequer pensar em atualizar. FATO.

Não só com relação ao IE, mas a maioria das empresas faz questão de se manter uma ou duas gerações atrás em tudo.

Pois bem, essa é a história:

Peguei um projeto para fazer, nada muito grande, mas uns dias depois de enviar o projeto para o cliente recebo um PPT com as “observações” (odeio quando mandam em PPT. Por que não manda direto no email? Dá até para por imagens, pô!). Eis que dentre elas está: “ajustar layout do menu”. A primeira coisa que eu vejo é: Win XP + IE6. FML.

Olha só como era para ser, e como está:

IE7

Aqui está tudo lindo, no lugar.
Aqui está tudo lindo, no lugar.

 

IE6

Já aqui... Tudo zoado...
Já aqui... Tudo zoado...

 

E o pior é que nem adianta dizer que o problema é só no IE6, que nos outros navegados funciona perfeitamente. Para o cliente só existe o browser que ele usa. Mas também, não adianta reclamar do cliente, tem que funcionar e pronto. O problema aqui é o IE6. 

Nas palavras do meu amigo homoss… Digo, designer: “IE6, te odeio. Por favor, morra.”

O grande empecilho aqui é que eu uso Vista. E testar algo no IE6 para quem usa Vista não é trivial. É preciso baixar o Virtual PC (ou algum outro software de virtualização) e uma Virtual Machine que a Microsoft disponibiliza com o XP SP3 e IE6, válida até Abril deste ano, por enquanto (eles vão lançando outras com o tempo). Tamanho total do download: 440mb. Minha internet é de 128kbs e muito temperamental. E o cliente na bota.

Baixado o VPC, mais uma batalha épica para conseguir fazer o XP virtual acessar o IIS do Vista. Muita briga com configurações de rede e firewall, mas eu consegui.

Então começo a fazer testes aleatórios no CSS para tentar descobrir o que está acontecendo. Eu estou usando CssFriendly Control Adapters, para fazer o Menu do ASP.NET ser gerado em <ul> ao invés da salada de <table>, <td> e javascript que é normalmente.

O grande problema é que o IE6 parece estar simplesmente ignorando todas as intruções “float” do CSS do menu. Todas as tentativas são frustradas, nem o alinhamento do menu à direita, nem os <li> na horizontal funcionam…

Bom, no Firefox ou no Chrome eu esclareceria isso com um “inspect element” e checando o estilo computado do elemento. Mas no IE6? Nem o IE Developer Toolbar funciona…

E agora? #comofas???

EDIT

Consegui resolver o pepino, graças a uma luz em um fórum de ASP.NET. É “só” colocar um width nos <li>, mas caso fixar a largura dos itens não seja uma opção (como é o meu caso), “width: 0px” parece resolver. Works for me!

Moral da história?

Stop living in the past

unnamed feeling

Obs: post feito às 23h05m…

Não sei o que dizer sobre o que estou sentindo agora.
Uma mistura de raiva, revolta, alegria, satisfação. E tudo pelo mesmo motivo!

Gastei as últimas 4/5h buscando na internet um jeito de fazer algo essencial, mas mal documentado: Inserir um texto em algum campo, mas no ponto de inserção (aka cursor).

Procurei em fóruns, sites de busca, mailing lists e nada. O que eu encontrava ou não era exatamente o que eu queria, ou não funcionava plenamente.

Encontrei algo que poderia ser o caminho para a salvação:

pos = $("texto").selectionStart;

Isso me daria a posição do cursor. Já é um começo. A partir daí eu iria dividir o texto entre “antes” e “depois” do cursor e enfiar o que eu queria no meio. Trabalhoso, mas já resolveria o meu problema.
Mas tem um pequenino detalhe: não funciona no Internet Explorer.
Bah! Que novidade… 😦 Me diz o que é que funciona nessa inhaca? E ainda tem 83% do mercado… ¬¬

Como diz o Ruppel:

Para usuário Internet Explorer: mude de navegador.

Pior do que atender só a minoria, minha solução não atendia o meu público alvo

Então volto a camelar… Já sem esperanças… Então tive um lampejo e só para constar: às 22h30, combinando uma dica de um fórum com uma tentativa desesperada e uma olhadinha na Referência do Dreamweaver, cheguei às seguintes mágicas linhas:

$("idtextarea").focus();
var range = document.selection.createRange();
range.text = "texto";

Obs: se você desconhece o comando $("idtextarea") é a mesma coisa que document.getElementById("idtextarea");
Para saber mais, dê uma olhada em http://www.metzen.com.br/freedom/. 😉

E é isso. Essas 3 linhazinhas. Simples assim.
Pior que eu já tinha tentado o document.selection.createRange(); antes, mas o macete está em dar foco no campo antes (no caso, a textarea). Aí vai do gosto do freguês: pelo ID, através do document.formulario.campo ou pelo document.forms['formulario'].elements['campo']Não interessa. O importante é o campo estar com foco antes de você criar o range.

Chato, não?
E eu aqui perdendo horas de sono…
Aliás, deixa eu ir dormir! 😀
Boa noite! o/

Acima ↑