di: Alvin Laini 29 Dicembre 2008
Come si diceva poco fa, all'elemento HTML select, tramite l'ausilo del metodo Event.observe della libreria Prototype, verrà associato il gestore di eventi onChange in modo tale che quando l'utente selezionerà un canale, tramite il costrutto Ajax.Request sempre del framework Prototype, verrà caricato in memoria l'URL del canale selezionato e al completamento della richiesta, la risposta sarà salvata formato XML in una variabile globale di nome "xml" (xml=transport.responseXML;).
Una volta che il nostro file RSS sarà stato caricato in memoria non ci resta che analizzarlo!
Questo compito sarà affidato alla funzione Javascript visualData, che effettuerà il lavoro di estrazione dei vari item. Nel nostro caso sarà estratto da ciascun elemento item i relativi sottonodi title, link e description, contenenti rispettivamente il titolo, il link e la descrizione del nostro ipotetico articolo. Ma non perdiamoci troppo in chiacchere ed analizziamo insieme passo per passo il codice:
//Formatterà l'RSS per mostrarlo a video
function visualData()
{
//Inizializzo il mio contenuto
var html="";
//Imposto in doc il mio elemento radice
var doc=xml.documentElement;
//Estraggo i vari nodi 'item' che compongono il mio file
var items=doc.getElementsByTagName('item');
for(var i=0; i < items.length; i++)
{
var title=items[i].getElementsByTagName('title')[0].firstChild.data;
var link=items[i].getElementsByTagName('link')[0].firstChild.data;
html +="<a href='" + link + "'>" + title + "</a><br>";
//Se la checkbox per i dettagli è selezionata visualizzo a video ulteriori info
if($('dettagli').checked)
{
var description=items[i].getElementsByTagName('description')[0].firstChild.data;
html +="<span class='description'>"+ description +"</span><br>";
}
}
//Scrivo i dati precedentemente ciclati nel mio contenitore
$('feedData').innerHTML=html;
}
xml.documentElement ricava il nodo radice del flusso RSS;for vengono iterati tutti i nodi item contenuti all'interno del documento RSS, il metodo Javascript getElementsByTagName() ci permetterà di prelevare all'interno del flusso XML il nodo che ci interessa;getElementsByTagName('nodo')[0].firstChild.data;$('feedData').innerHTML=html;)L'esempio presentato in questo articolo non visualizza tutte le informazioni disponibili per ogni item: l'autore e la data vengono omessi, cosi come le informazioni generali sul canale. Se volete rendere il codice di uso più generale sentitevi liberi di farlo, espandendo la funzione visualData in modo da farle visualizzare quello che desiderate.
Guida Node.jsIl framework che permette di per usare V8, l'interprete JavaScript... |
Canvas, guida ai frameworkCanvas, tra gli elementi di HTML5 è forse quello di maggior impatto.... |
Guida jQuery UICreare siti ricchi e dinamici con jQuery UI, il progetto ufficiale... |
Ogni martedì, direttamente nella tua e-mail: guide, articoli, script, novità e approfondimenti tecnici su JavaScript.
Iscriviti alla newsletter
|
|
Corso Webmaster base18 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso JQuery e Ajax per Webmaster03 Luglio 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |
|
|
Corso Webmaster base11 Giugno 2012 a Roma |