Sufriendo de nuevo a Internet Explorer

Hace ya algunos años me dio por aprender CSS. Recuerdo el pequeño infierno que fue aquello por culpa de Internet Explorer. Muchos navegadores cumplen el estándar de CSS y muestran las páginas web de acuerdo a ese estándar, pero entre esos muchos navegadores no se encuentra Internet Explorer. Este navegador interpreta CSS a su manera, por lo que la página que se ve bien con otros navegadores, no se ve bien con Internet Explorer. Al final debes probar tu página con varios navegadores, buscar la forma que que el CSS valga para todos ellos, o usar los famosos hacks para internet explorer.

Ahora que ando jugando con JavaScript, me encuentro con exactamente el mismo problema. Suelo usar Google Chrome, mi compañero de proyecto usa FireFox y en ambos exploradores vemos bien la aplicación. Pero … ¡¡ AY de mí !!, se me ocurrió abrir la aplicación con Internet Explorer y, efectivamente, como no podía ser de otra forma, no salía nada de nada.

El problema que daba Internet Explorer es que un document.getElementById("cosa") daba error "el objeto no acepta la propiedad o método". ¿Error de sintaxis? no, los otros navegadores lo hacían bien. Y googleando encuentro que Internet Explorer (al menos versiones 6 y 7) hacen una cosa rara con los id de los tag html, los name de los tag html y las variables globales de javascript. Básicamente, que todo id y name que encuentra lo convierte en variable global. Por lo que si tu código tiene un name, un id y/o una variable global con el mismo nombre, tienes un problema seguro.

Efectivamente, ese era el problema. Si yo quería obtener mi div con id="panel", en javascript había puesto

panel = document.getElementById("panel");

y ya estaba el lío montado. Afortunadamente, después de un par de horas de búsqueda en google, el arreglo se hizo en menos de dos segundos.

Esta entrada ha sido publicada en javascript y etiquetada como , . Guarda el enlace permanente.

6 respuestas a Sufriendo de nuevo a Internet Explorer

  1. Grover Campos dijo:

    Aaahhh IE, eso lo sufrí hace ya bastante tiempo, por esa razón ahora TODO Id que establezco le pongo siempre sufijos y nunca usar una variable con el mismo nombre para referenciarlo. ¡Que problema con eso!

  2. Francisco dijo:

    Hola amigo, siempre leo tu blog.

    No se cual ha sido la solución que has encontrado, pero te sugiero siempre usar:
    var panel = document.getElementById(«panel»); que es básicamente variables locales para evitar conflictos con variables globales.

    De todas maneras explorer en cualquier versión siempre da problemas con estilos principalmente.

  3. Chuidiang dijo:

    je, el arreglo es fácil, no poner el mismo nombre a la variable y al id. No me gusta tampoco usar variables globales, pero estoy pagando la novatada de empezar con un lenguaje nuevo.

  4. rsavo dijo:

    Te conviene usar algun framework como jQuery o Prototype, que te facilitan muchas tareas y ademas mejoran la interoperabilidad entre navegadores.

  5. Maks dijo:

    Esta semana tuve un problema similar al intentar hacer getAttribute(‘for’) dentro de una búsqueda de

    En ese caso no existe ninguna variable llamada for (aunque si la propia palabra reservada del lenguaje)

    La solución fue acceder a los atributos de la etiqueta a través del array attributes[] de cada etiqueta.

  6. Luis dijo:

    Hola,

    El uso de un framework como Jquery o Mootools te puede ayudar para programar en javascript, asi tener menos problemas en diferentes browsers.

    Para tu ejemplo con Jquery sería: $(‘#panel’) y me olvido del tipo de browser.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.