viernes, 18 de enero de 2008

Un bug persistente del IE...

Hace unos días tuve que echar mano a un desarrollo web que había tercerizado y que al final la persona a quien se lo había asignado no pudo seguir, así que (como casi siempre), tuve que retomarlo...

El software en cuestión consta (entre otras cosas) de una interfaz de búsqueda guiada, la cual decidí desarrollar usando AJAX (NO confundir con la marca AJAX competidora de ACME en los dibujos animados...), dado que el volumen de datos a cargar del servidor no era demasiada, y además quería que fuera lo más dinámica posible y rápida para el usuario.

La idea era declarar unos objetos SELECT y luego cargarles dinámicamente objetos OPTION con los valores apropiados. Normalmente, este tipo de acciones se puede lograr en Internet Explorer asignando el contenido de responseText del objeto AJAX (el cual debería contener un conjunto de objetos OPTION generados a partir de un script en el servidor) a la propiedad innerHTML del objeto SELECT, haciendo que este cargue dichos OPTIONs como si fueran hijos.

La idea ya había sido explorada por el anterior programador con un propósito similar en una pantalla donde se deberían cargar datos en forma dinámica, aunque cuando intentó ejecutar su idea en Internet Explorer, la implementación no funcionó. El código funcionaba en Firefox y amigos, pero la "fat E" se negaba a funcionar.

Cabe agregar a esto, que la propiedad innerHTML es un puro invento de Micro$oft, no aceptado por la W3C, que en realidad exige utilizar las funciones createElement() y appendChild() para estos menesteres, las cuales están definidas en el DOM

Lo gracioso de esto es que el código que funcionaba en Firefox NO es el que la W3C considera válido, sino que era el código que Micro$oft había diseñado como contrapartida a usar las funciones definidas en el DOM, lo cual significa que la solución que usa innerHTML ¡solo fallaba en Micro$oft Internet Explorer!.

No es la primera vez que Micro$oft hace incompatible (ya sea por error o deliberadamente) alguna función con sus propios productos. Solo hace falta recordar como le sacaron a la continuación del "Write" de Windows 3.X (el infame "Wordpad") la opción de justificación distribuida de texto (un atentando directo a los usuarios para que compraran el Word y así dejen de hacer sus cartas con Wordpad...), o cuando inventaron FAT32, que Windows NT 4.x era incapaz de leer y/o escribir...

El bug está documentado desde la versión 5 de IE, y hasta ahora (versión 7, y casi 5 años después), M$ no lo ha resuelto.

(No sé de qué carajo me sorprendo en realidad...)

Aüf Wiedersehen!

No hay comentarios:

 
Gustavo Castro

Crea tu insignia