Hoy he necesitado cargar un RSS externo desde una web, y había que hacerlo con Javascript. El problema es que desde Javascript solo se puede hacer peticiones asíncronas a URL’s de tu propio dominio, debido a restricciones de seguridad.
El otro día estuve viendo cómo cargar los frameworks más famosos y las API’s de Google desde el CDN de Google. Google también permite cargar sus API’s AJAX mediante este método, y entre estas API’s se encuentra el API AJAX de Google para feeds, que permite cargar cualquier RSS de cualquier dominio haciendo uso solamente de Javascript, eliminando la necesidad de crear un proxy en el servidor, ya que Google lo crea por ti. Las ventajas están bastante claras:
- Menos lógica en el servidor.
- Menos sobrecarga en el servidor
- Las ventajas de usar un CDN externo para cargarJavascript.
La dirección del feed RSS que voy a utilizar es la de mi cuenta de Twitter. Para obtener la dirección solamente hay que abrir el enlace que proporciona Twitter en su página web.
En este post encontrarás...
Usando el objeto FeedControl
El objeto FeedControl, permite añadir todos los feeds que quieras mediante le método addFeed y luego, mediante el método draw, inyecta el contenido de estos en el elemento DOM especificado.
El código HTML se muestra a continuación:
En el div identificado con la palabra «contenedor» se cargará automáticamente el contenido del Feed. En la imagen se puede observar el resultado.
Luego, viendo el código HTML generado mediante un inspector HTML como Firebug o el que trae IE 8, se puede crear un código CSS para cambiarle la apariencia. Este método es muy cómodo, pero si se necesita más control sobre el código generado se puede utilizar el objeto Feed, que proporciona más control.
Usando el objeto Feed
El objeto Feed permite cargar el documento XML que compone el Feed y tratarlo como un objeto JSON (comportamiento por defecto). Después se itera sobre el objeto JSON y se inyecta directamente sobre el DOM de la página.
Breve explicación del código:
- En el constructor del objeto Feed se pasa como parámetro la URL del feed RSS.
- El método setNumEntries establece el número de items descargados del feed.
- El método load carga el feed en la variable result.
- result.feed.entries es un array de objetos con la información de cada item del feed. Se itera sobre este array y se va inyectando la información de los feed en el DOM.
El código HTML es el mismo que el usado en el primer ejemplo. Luego con un poco de CSS se le da un poco de apariencia al widget.
*{
margin:0;
padding:0;
}
#contenedor{
width:280px;
padding-left:15px;;
}
#contenedor h2 a{
color:#FF4D07;
font-size:20px;
font-family:"Trebuchet MS";
text-decoration:none;
}
div.entrada{
margin:10px;
}
div.entrada img.icono{
float:left;
margin-right:15px;
}
div.contenido a{
color:#09399F;
text-decoration:none;
}
div.fecha{
font-family:"Trebuchet MS";
font-size:12px;
color: #7F7F7F;
}
El resultado final es este:
Conclusión
La potencia de esta API está bastante clara, nos proporciona una forma rápida y cómoda de acceder a los feeds RSS de cualquier parte. Teniendo en cuenta que ahora hay muchos servicios como redes sociales, etc… que proporcionan esta información mediante RSS, nos abre un abanico de posibilidades a la hora de mejorar nuestros diseños añadiendo información en tiempo real sobre, por ejemplo, nuestros últimos tweets.