Firefox y el innerText

Recientemente nos ha tocado adecuar la interfaz de usuario de una aplicación Web para que además de funcionar con MS Internet Explorer, funcione con Firefox.

La aplicación Web fue implementada (en el 2003) por requerimiento del cliente para trabajar específicamente con MS Internet Explorer (el navegador estándar del cliente para aquel momento).

El principal inconveniente que hemos conseguido ha sido el Javascript y en particular el uso de la propiedad innerText, la cual usamos para actualizar contenido de la página, y que no es válida en Firefox, en Firefox su equivalente es textContent.

Despues de dar vueltas llegamos a una buena solución, definir la propiedad innerText en Firefox ;-)

JavaScript:
  1. if (isFirefox){   
  2.   HTMLElement.prototype.__defineGetter__("innerText",function () { return(this.textContent); });   
  3.   HTMLElement.prototype.__defineSetter__("innerText",function (txt) { this.textContent = txt; });
  4. }


10 Respuestas a “Firefox y el innerText”

  1. 1 afrael

    Coño estan pasaos :)

    Les quedo bueno!

  2. 2 eugenio

    Excelente. Eso si es un firefox-hack :)

  3. 3 Igvir

    Muy buena idea, definitivamente una solucion adecuada

  4. 4 Nelo

    Gracias por el dato ...

  5. 5 Mario

    Como se usa?, copié el codigo y lo puse dentro de unas etiquetas javascript en el head de mi pagina pero no funciona. a que se debe que he hecho mal.

  6. 6 Edgar González

    Mario, si te copiaste el código exacto, es probable que lo que te esté fallando es el "isFirefox", esa parte del código debe ser implementada, para esto puedes usar cualquiera de los javascripts disponibles en la red para determinar el browser actual.

    Un ejemplo rápido puede ser:

    JavaScript:
    1. var isIE = (window.navigator.userAgent.indexOf("MSIE")> 0)
    2. if (! isIE){   
    3.   HTMLElement.prototype.__defineGetter__("innerText",function () { return(this.textContent); });   
    4.   HTMLElement.prototype.__defineSetter__("innerText",function (txt) { this.textContent = txt; });
    5. }

  7. 7 javier lop

    mira uy otra cosa debes de usar una libreria llmada prototype

    http://prototype-window.xilinus.com/documentation.html

    documentacion de prototype

  8. 8 Jose

    Hola,

    Tal vez tendrías que probar con algo más sencillo... en lugar de "innerText" solo tienes que poner "innerHTML" y te funcionará perfectamente en todos los navegadores.

    Jose

  9. 9 Avatar242

    yo quiero aprender a hacer esas cosas

  10. 10 Mauricio

    Si, efectivamente como dice José, deberías usar "innerHTML", ya que :
    1: no haces tu función
    2: es un standard
    3: y los usuarios de mac?...usan safari (si, se que existe firefox para mac, pero tb existe para win, y hay usuarios que usan IE)

    Mauricio


RSS feeds

Suscríbete a nuestros RSS Feeds