Ver Mensaje Individual
  #11 (permalink)  
Antiguo 24/06/2008, 13:18
juanromerocruz
 
Fecha de Ingreso: febrero-2007
Mensajes: 103
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: no me funciona en IE

Cita:
Iniciado por venkman Ver Mensaje
Lo que pretendía decir es que la respuesta que está recibiendo no es un documento HTML.

Hace una petición que recibe text/xml y que por tanto se trata como XML. No sé si sabréis la diferencia entre un documento HTML y un documento XML, pero no son lo mismo, y su Document Object Model tampoco es igual.


Lo que recibe es un documento XML como:
Código:
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>programming: que hay de nuevo en línea</title>
    <link>http://taltal/</link>
    <description></description>
    <item>
      <title>Symbian will go open source</title>
...
Eso tiene un DOM, pero ese DOM no es el mismo que el de un documento HTML. En concreto, los nodos no tienen ninguna propiedad llamada innerHTML.

Si quieres ver más sobre el XML DOM.

Para acceder, en este caso, al valor entre <title>blablabla</title> usa .childNodes[0] para acceder al nodo de texto y luego .nodeValue para obtener el valor.

Código:
var titulo = canal.getElementsByTagName('title')[0].childNodes[0].nodeValue;

Efectivamente eso es lo que le pasaba, hechos los cambios oportunos funciona perfectamente en los dos navegadores.

Bien solo me que da una duda:

Este codigo hace uso de de un metodo que se le agrega a Object por medio de prototype

Código:
Object.prototype.get = function(etiqueta) {
  return this.getElementsByTagName(etiqueta)[0].childNodes[0].nodeValue;
pues bien, haciendo uso de este metodo, el script no funciona en IE y sí en FF.
para que funcione en los dos tengo que poner el codigo nativo. o sea

Código:
 var titulo = item.getElementsByTagName('title')[0].childNodes[0].nodeValue;
Acaso no funciona prototype con IE?