Errores frecuente en javascript que hacen que las páginas solamente funcionen con Explorer y no con otros navegadores.


Los que no somos usuarios del sistema operativo y navegador mayoritarios (Windows/Internet Explorer) estamos por desgracia habituados a que muchos diseñadores de páginas web prueben sus diseños únicamente con IE y si funcionan bien con este navegador no se tomen la molestia de verificar si funcionan con otros, depurando los posibles errores.

Por eso, al usar por ejemplo Mozilla (se podría poner Firefox, Konqueror, Galeon, ...), no es raro encontrarse páginas que no pueden visualizarse o cuya funcionalidad está reducida. Esto ocurre especialmente en páginas interactivas que normalmente están escritas en el lenguaje javascript.

Me voy a referir aquí a dos de los mensajes de error más habituales (por supuesto, hay muchos más) que suele aparecer cuando el usuario introduce algún tipo de información (teclea algo, pulsa sobre un icono, ...). La página no responde de la forma esperada y en la consola javascript aparece un mensaje de error.

El autor advierte de que no tiene conocimientos de programación en javascript y lo que aquí se indica viene se deduce simplemente de la observación del código fuente de páginas que no funcionan y su comparación con el de otras que sí lo hacen.

a) Error: document.getElementById("loquesea") has no properties


Esto suele indicar que Mozilla busca en el código de la página un elemento cuya identificación es "loquesea" (id="loquesea") para obtener algún dato y no lo encuentra. ¿Y por qué IE sí es capaz de encontrar ese elemento y Mozilla no? Pues porque posiblemente el elemento en cuestión exista, tenga como nombre "loquesea" (name="loquesea") pero no tenga una identificación (id no está definido). Parece ser que IE da por buena esta situación y acepta name como si fuera id.

Así, analizando el código de la página es posible que aparezca por algún sitio algo del estilo:

<input name="loquesea" ... >
(el elemento puede ser un input o cualquier otra cosa).

¿Que habría que hacer para que Mozilla también fuera capaz de encontrar este elemento? Pues simplemente insertar una id para ese elemento, con lo cual lo anterior quedaría como:

<input name="loquesea" id="loquesea" ...>

De hecho, se podría revisar todo el código y añadir una id a todos los elementos que tengan name y no tengan id, usando la misma cadena para ambos para evitar complicaciones.

b) Error: document.forms is not a function (o similares)

Este error suele aparecer cuando en la página hay algo del tipo document.forms(0). Mozilla interpreta que document.forms debe ser una función que actúa sobre el valor 0, función que no existe dado que lo que se intenta referenciar es el formulario cero. La sintasis correcta en javascript es poner document.forms[0], así que el error consiste simplemente en usar paréntesis donde deberían ir corchetes. Nuevamente parece que IE tolera este error y otros navegadores no.

La solución parece simple: cambiar los paréntesis incorrectos por corchetes.

Creo que con estas simples correcciones, se podría conseguir que algunas páginas que funcionan solo con IE lo hicieran también con Mozilla y otros navegadores.

Más información para escribir javascript que funcione tanto en IE como en Mozilla:
http://www.mozilla.org/editor/ie2midas.html

Copyleft: Puedes leer, copiar, distribuir, criticar, denigrar, etc. este documento con toda libertad. Simplemente espero que le pueda ser útil a alguien. Por supuesto, son solamente sugerencias que pueden funcionar o no y evidentemente, no le garantizo absolutamente nada a nadie.

Envíar comentarios, sugerencias, correcciones, ... a mquiros<arroba>ugr.es