quinta-feira, 8 de outubro de 2009

creatElement não funciona no IE

Como é esperado, o IE sempre dá uma pauleira desgraçada na hora do desenvolvimento, ainda mais quando o assunto é Javascript.

Há um tempo atrás, no meu outro trabalho, tive que criar uma tag input do HTML a partir de um Javascript, segundo as especificações DOM para ECMAScript. No Firefox, sem problemas. Mas o IE não conseguia fazer o mesmo. (O teste foi feito no IE 6, 7)...

Eis o problema:
<script type="text/javascript">
  var novoCampo = document.createElement('input');
  novoCampo.setAttribute('name', 'endereco');
  //setando outros atributos...
  //adicionando no DOM
  document.getElementsByTagName('form')[0].appendChild( novoCampo );
</script>
 O IE não seta o name! ¬¬
A solução pra corrigir esse bug é verificar qual browser que a pessoa está usando e fazer uma verificação:

<script type="text/javascript">
  //verificação p/ ver se é IE ou Opera 
  var isOpera, isIE = false;
  if(typeof(window.opera) != 'undefined'){isOpera = true;}
  if(!isOpera && navigator.userAgent.indexOf('Internet Explorer')){isIE = true);

  var novoCampo = null;
  if(!isIE){
    novoCampo = document.createElement('input');
    novoCampo.setAttribute('name', 'endereco');
  } else {
    novoCampo = document.createElement('<input name="endereco"/>');
  }
  //setando os outros atributos do input...
  //adicionando no DOM
  document.getElementsByTagName('form')[0].appendChild( novoCampo );
</script>

Toda solução pro IE fica meio porca, mas, assim funfa!

Beijos, até a próxima.

Nenhum comentário:

Postar um comentário