Como siempre, el problema con javascript es (además de hacer un código mantenible) es la compatibilidad con los navegadores, y eso que sólo pruebo el javascript que escribo con firefox y explorer, siempre utilizo firefox por la consola javascript y el plugin WebDeveloper, y luego vienen los problemas.
Algunos problemas con los que me he encontrado han sido trabajando con el DOM de javascript, siempre (qué casualidad) con explorer, por ejemplo si quisieramos cambiar el class de una etiqueta, que me dió un pequeño dolor de cabeza hasta que buscando por internet ví que explorer no lo soportaba:
midiv=document.getElementById(...midiv...);
//Con DOM simplemente sería un cambio en el atributo class
midiv.setAttribute(...class...,...miclass...);
Probamos con fiefox y...¦ ¡funciona! Ahora explorer y...¦ vemos que no.
La solución es utilizar el className:
midiv.className= ...œmiclass...;
Otro problema, pero menos por que está muy documentado enmuchísimas webs, es la creación del objeto XMLHttpRequest, para asegurarte la compatibilidad entre explorer y otros de los navegadores más utilizados esta es una posible solución:
ids=["Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0","Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
for(var cont=0; !xmlhttp && ids.lengh>cont;cont++)
try {
xmlhttp = new ActiveXObject(ids[cont]);
}
catch(ex) {
xmlhttp = false; }
}
if (!xmlhttp && typeof XMLHttpRequest!="undefined") {
xmlhttp = new XMLHttpRequest();
}
Este es un ejemplo de los muchos problemas que nos da el dichoso explorer, que no soporta como debería el DOM y no daría tanto miedo el tocar AJAX en cuanto a compatibilidad entre navegadores.
Por ahora la solución que he encontrado es visitar el msdn de microsoft, para ver qué puedo hacer y qué no, ya que pocas veces me ha ocurrido el caso contrario.