DOM setAttribute & Internet Explorer

El siguiente texto está orientado a desarrolladores web. Quien no pertenezca a este tipo de seres ¿humanos? esquívelo si quiere. Probablemente no entienda una goma :-p

Hago un copy&paste de un mail que mandó Nico (cuando me acuerde la url de su blog la actualizaré :p) a un mail interno de la empresa para compartir su experiencia del día Jueves pasado. Me pareció interesante seguir con la cadena de difusión así que aquí va!

Che, para aquellos que les interese. Acabo de tener dos problemas con el setAttribute del DOM e Internet Explorer. Dos cosas que funcionaban de maravilla en todos los demás browsers, en Internet Explorer pinchaban (eso no es lo extraño).

Las cosas que intentaba hacer era:
1. modificar el atributo “type” de un input.
2. modificar el atributo “class” de cualquier elemento.

Después de darme la cabeza por mucho tiempo hasta ver qué corno era lo que pasaba, encontré algunas cosas:

No se puede cambiar el atributo NAME
“The NAME attribute cannot be set at run time on elements dynamically created with the createElement method. To create an element with a name attribute, include the attribute and value when using the createElement method.”
[Fuente: MSDN]

No se puede cambiar el atributo TYPE
Lo más gracioso es que si hacés un setAttribute(”type”, “algunTipo”) pincha, pero si ponés setAttribute(”TYPE”, “algunTipo”) no, aunque no hace nada.
“As of Microsoft Internet Explorer 5, the |type| property is read/write-once, but only when an |input| element is created with the |createElement| method and before it is added to the document.”
[Fuente: MSDN]

El atributo “class” es “className” en Explorer
Una clase podría setearse como setAttribute(”class”, “valorClases”), pero no en Explorer. Para setear una clase en Explorer hay que hacer un setAttribute(”className”, “nombreClase”), así que hay que hacer ambos para que funcione en ambos lugares.

Creo que hay otros temas con colgar nodos en Explorer, pero no me adentré más porque ya tenía mucha bronca.

Acá hay una página que trata este tema:
http://alt-tag.com/blog/archives/2006/02/ie-dom-bugs/

PD: Esto va al margen de los frameworks onda prototypejs, no da responder “hacelo con prototype”. Tómenlo como información general.

Comentarios

4 Comentarios en “DOM setAttribute & Internet Explorer”

  1. jasbleidy gonzalez saldaña on January 15th, 2008 5:45 pm

    que vien esta un poco vien

  2. Carlos on January 27th, 2008 6:12 pm

    IE es una pendejada.

  3. TiAGO on January 27th, 2008 8:41 pm

    Es verdad pero hay veces en las que uno no puede decirle al cliente eso :p

  4. fernando on July 14th, 2008 6:53 pm

    looooco, muchisimas gracias por el post, me libraste de un dolor de cabeza terrible

Dejar un comentario