Tiempo atrás, estaba trabajando en una página que utilizaba mucho Javascript para facilitar la entrada de datos al usuario… pero el código JS que funcionaba perfecto en Firefox, se negaba a hacer su trabajo en Internet Explorer.
Básicamente, utilizando el framework MootTools para JavaScript, estaba tratando de obtener el valor ingresado por el usuario en un campo cuyo nombre (name) e identificador (id) era description, el código html era básicamente el siguiente:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="description" content="Some App Description" /> <title>Some App</title> </head> <body> <input type="text" name="description" id="description" value="Guacamole" /> </body> </html>
y el código JavaScript que utilizaba para obtener el valor ingresado era algo parecido a ésto:
var description;
description = $('description').get('value');
Mientras lo anterior retornaba el valor ingresado en Firefox (como se esperaba), en Internet Explorer retornaba null. En ése momento estaba utilizando Internet Explorer 7 para hacer las pruebas ya que ésa era la versión que utilizaba nuestro cliente.
Inicialmente pensé que ya había un elemento con el mismo identificador (id) en la página, pero luego de mirar el código html generado, confirmé que no había otro elemento con el mismo nombre. Después empecé a revisar mi código JavaScript pensando que el error estaba ahí, nada, todo parecía correcto… al final, pensé que el problema podría ser causado por un DOCTYPE incorrecto o por algún bug oculto en MooTools… tampoco.
Fue entonces que le “comenté” a Google el problema que tenía… él, como siempre muy gentil, me respondió con éste artículo que describe como los atributos ID y NAME son básicamente lo mismo en Internet Explorer (hasta el 7) y con ésta otra página en el MSDN de Microsoft que efectivamente, confirma ese comportamiento:
In IE7 mode and previous modes, this method performs a case-insensitive match on both the ID and NAME attributes, which might produce unexpected results.
Después de algunas horas, finalmente supe qué estaba pasando… IE estaba tratando de obtener el atributo value de ésta línea (que por supuesto no lo tiene, de ahí el resultado null):
<meta name="description" content="Some App Description" />
en lugar de obtenerlo de ésta línea:
<input type="text" name="description" id="description" value="Guacamole" />
Ambas líneas comparten el mismo atributo (NAME) y el mismo nombre (description).
La solución? Simplemente, cambiar el ID y el NAME del input text.
Asunto resuelto.
- NAVEGAR EN EL TIEMPO
- « Cómo configurar Zend Framework en un dominio
- » Cómo mejorar el rendimiento de Magento en un servidor (dv) de Media Temple
- NAVEGAR EN Desarrollo web
- » Cómo mejorar el rendimiento de Magento en un servidor (dv) de Media Temple
HABLA / SAY SOMETHING!
Comentarios son moderados.






