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