Mostrando postagens com marcador css. Mostrar todas as postagens
Mostrando postagens com marcador css. Mostrar todas as postagens

domingo, abril 15, 2007

Concordo: IE6 deve morrer

Como o Blogger não suporta Trackback ainda, então vai na mão mesmo:
http://www.tableless.com.br/ie6-deve-morrer

Na última sexta-feira, 13 por coincidência, tive 2 dores de cabeça com o IE6.

Problema #1: um Javascript responsável por salvar alguns dados no servidor:


for (country in countries) { ... }


isso funciona no Firefox, porém o IE acusava um problema. Graças a um debugger de Javascript que tenho instalado, consegui constatar que era esta expressão a culpada, então um amigo falou: "Coloca um var ali na declaração de country". Dito e feito, o correto é:


for (var country in countries) { ... }


Problema #2: tags A com background-image, quando se passava o mouse por cima do link, algumas vezes, acontecia que a imagem desaparecia e aparecia novamente, em inglês flickering. Pesquisando vi que isso já é um bug conhecido do IE6, uma página fazia uma série de teorias explicando o porque daquele bug, outra apenas relatava a solução que foi adotada, a terceira e última foi mais útil, explica que a causa do problema está nos response headers HTTP, mais precisamente no Expires. Como queria uma solução mais rápida e que respondesse na mesma moeda ao IE, optei pela solução que usa um Javascript apenas no IE6, que altera um parâmetro não documentado do browser:

<!--[if IE 6]><script type="text/javascript">
try {
document.execCommand("BackgroundImageCache", false, true);
} catch(err) {}
</script><![endif]-->

Solucionado! Muito melhor que perder tempo² (meu tempo desenvolvendo uma solução para retornar as imagens com o header Expires, e o tempo do processador do servidor depois para servir as imagens através dessa solução e não do procedimento padrão do servidor HTTP).

sábado, março 24, 2007

JQuery, CSS e ids (X)HTML

Em um projeto que estou trabalhando no momento estou usando o JQuery, porém me deparei com um problema ao tentar utilizar o seu $() com elementos que contenham ids com caracteres como ponto e dois-pontos, que são caracteres válidos em ids.

Preparei um arquivo de testes e postei o problema na lista do JQuery, e em alguns minutos obtive entre as respostas uma que apontava que já existia um bug report para este problema (aqui entra a lição de sempre procurar pelo problema no bug tracker do projeto!), que até agora ainda não foi solucionado, existe uma sugestão de patch que altera a expressão regular do CSS selector do JQuery para uma solução parecida com o que já existe na especificação do CSS...


<style>
#test.x { background-color: green; color: yellow; }
</style>
...
<p id="test.x">P with id 'test.x'.</p>


O código acima não irá funcionar como esperado, ele na verdade seleciona o elemento com id 'test' e classe 'x', para ter o efeito desejado deve-se usar '#test\.x', ou seja, "escapa"-se o ponto, o que informa ao interpretador CSS para cancelar a busca pela classe.

A solução temporária é eu aplicar o patch e compilar a minha própria versão do JQuery...