Archive for the ‘Internet Explorer’ Category

O Ícone da Internet

| By: Jerônimo Fagundes da Silva
Friday, September 5th, 2008

Todos andam falando, quem sou eu para não falar também.

O Google lançou recentemente um novo browser no mercado: o Google Chrome. Beta, pra variar, como quase tudo no Google. Mas no Google, beta não é sinônimo de ruim.

Infelizmente, ainda não tive o prazer de experimentá-lo, visto que sou um linux guy, e o Chrome só foi lançado para Windows, por enquanto. Mas pelo que pude ler, dizem ser um excelente navegador em termos de velocidade, o que é ótimo. É bom ver um navegador rodando JavaScript mais rápido também. :-)

Lendo o post do Diego Eis no Tableless, não pude deixar de notar que muita gente torce para que o Chrome desbanque o Internet Explorer, principalmente a versão 6. Não posso discordar que também detesto essa versão do navegador.

Contudo, nesse aspecto, sou um pouco pessimista. Há tempos o Firefox está aí, é bem melhor que o IE, e as pessoas resistem em migrar de um navegador para outro. Muita gente sequer atualiza a versão do próprio navegador que usam. Uns, por comodidade; outros, por não saber como fazê-lo, ou por desconhecer a existência de outros navegadores. Mas o pior, e creio que é o fator principal de não haver a migração: muita gente não sabe o que é um navegador; eles simplesmente sabem que “clicaram no ícone da internet”. O Internet Explorer vir junto com o Windows é o maior problema (e que desbancou o finado Netscape).

Torço que a Microsoft adote uma solução mais rígida para o IE6: forçar a atualização para o IE7 em todos os computadores, obrigatoriamente. Não que o IE7 seja bom, mas é menos pior que o 6. E torço para que venha por aí um IE8 no mínimo razoável.

Não creio que o Chrome vai desbancar o IE. Mas creio que será mais uma boa opção de navegador, e com tantas boas opções, quem sabe faça a MS pensar e melhorar o velho IE.

Mas, de minha parte, viva Firefox.

Share/Save/Bookmark

id == name? O problema do getElementById no Internet Explorer

| By: Jerônimo Fagundes da Silva
Wednesday, August 13th, 2008

Sem dúvida, uma das funções mais usadas do JavaScript (se não for A mais usada) é o document.getElementById(). O que nem todos sabem é de um pequeno problema sobre a implementação desta função no Internet Explorer.

Bem, segundo o que o próprio nome da função diz, ela é uma função para “pegar um elemento pelo id”; contudo, no IE, esta função também pega um elemento pelo name.Veja o exemplo.

Imagine o seguinte código:
<input name="teste" type="text" value="oops">
<script type="text/javascript">
var a = document.getElementById('teste');
try{
alert(a.value);
}
catch(e){
alert('"teste" não existe!');
}
</script>

O que se espera é que ‘”teste” não existe’ seja alertado, pois não há elemento com id igual a “teste”, logo “a” seria nulo. Isso ocorre no Firefox, por exemplo. Já no IE o valor “oops” é alertado, pois ele pega o elemento pelo name, e não pelo id.

Duvida? Faça o teste com o código acima.
Podemos dizer então que o IE está errado em sua implementação? Não necessariamente.

Do ponto de vista do nome da função, “getElementById”, os elementos deveriam ser pegos por e somente por id, e não por name. Contudo, o W3C define que id e name compartilham do mesmo namespace; segundo o consórcio, quando id e name são usados simultaneamente em uma mesma tag eles PRECISAM ter o mesmo valor. Além disso, é proibido usar um id igual a um name para elementos diferentes. Assim, a Microsoft não pode ser acusada de ter implementado incorretamente a função pois, no exemplo acima, se existisse algum elemento com id igual a “teste”, seria o mesmo input text, visto que o seu name já é “teste”, logo o id “teste” só poderia ser aplicado aquele elemento, semanticamente falando.

Mas ainda tem a questão de que o nome da função informa que o elemento será pego pelo id, e não pelo name… Afinal, quem tem a razão?

Minha resposta pessoal é: não sei. Mas tenho uma opinião pessoal.

Eu acho que se o nome da função informa que o elemento será pego por id, ele deve ser pego somente por este atributo, e não por name (ao contrário do que ocorre no IE). Pois, semanticamente falando, o atributo id pode existir ou não, independentemente da existência do atributo name, e vice-versa! O fato é que se há um atributo name definido e o atributo id não foi, então NÃO HÁ um elemento com o atributo id igual ao valor passado por parâmetro, logo, não se pode pegar o elemento por id.

Isso é o que eu acho. Mas quem deve decidir qual das implementações é correta é o W3C.

E você? Tem opinião formada sobre isso?

Fonte de inspiração: Quirksmode

Share/Save/Bookmark