Script javascript RSS

WRInaute impliqué
Salut
je cherche un (LE) script javascript le mieux (le plus simple) pour lire des flux rss.
Vous avez quelques adresses?
 
WRInaute impliqué
C'est pour éviter des appels au serveur.
Et c'est une page perso, elle ne sera jamais référencée... :wink:
 
WRInaute impliqué
Je ne vois pas pourquoi on ne pourrait pas ouvrir un flux rss en javascript...
Il est très bien le tuto d'Olivier, mais c'est du php....
 
WRInaute discret
Bonjour à tous,
Dans certain cas, un javascript peut être nécessaire quand, par exemple, dans une entreprise vous disposez d'un intranet avec un serveur non relié à internet pour des raisons de sécurité, seuls les postes clients ont un accès internet.

J'ai du bricoler ce code Javascript pour résoudre ce problème. Uniquement pour IE, incomptaible avec les autres navigateurs.
Dans le head :

Code:
<SCRIPT LANGUAGE="JavaScript">
function readRSS(URI) {
	if(window.ActiveXObject) {
		var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		while(xmlDoc.readyState!=4) document.write('Loading...');
	}
	else if(document.implementation&&document.implementation.createDocument)
		xmlDoc=document.implementation.createDocument("","doc",null);
	xmlDoc.load(URI);
	items=xmlDoc;

	function verify() {if(xmlDoc.readyState!=4) return false;}

	function formatRSS() {
		//var items_count=3;
                           var items_count=items.getElementsByTagName('item').length;
		var pubDate=new Array(), date=new Array, link=new Array(), title=new Array(), description=new Array(), guid=new Array();

		for(var i=0; i<items_count; i++) {
			if(items.getElementsByTagName('item')[i].getElementsByTagName('pubDate').length==1)
				pubDate[i]=items.getElementsByTagName('item')[i].getElementsByTagName('pubDate')[0];
			if(items.getElementsByTagName('item')[i].getElementsByTagName('dc:date').length==1)
				date[i]=items.getElementsByTagName('item')[i].getElementsByTagName('dc:date')[0];
			if(items.getElementsByTagName('item')[i].getElementsByTagName('link').length==1)
				link[i]=items.getElementsByTagName('item')[i].getElementsByTagName('link')[0];
			if(items.getElementsByTagName('item')[i].getElementsByTagName('guid').length==1)
				guid[i]=items.getElementsByTagName('item')[i].getElementsByTagName('guid')[0];
			if(items.getElementsByTagName('item')[i].getElementsByTagName('title').length==1)
				title[i]=items.getElementsByTagName('item')[i].getElementsByTagName('title')[0];
			if(items.getElementsByTagName('item')[i].getElementsByTagName('description').length==1)
				description[i]=items.getElementsByTagName('item')[i].getElementsByTagName('description')[0];
		}

		if((description.length==0)&&(title.length==0)) return false;

		document.write('<a href="'+xmlDoc.getElementsByTagName('link')[0].firstChild.nodeValue+'">'+xmlDoc.getElementsByTagName('description')[0].firstChild.nodeValue+'</a> </br>');
		var ws=/\S/;

		for(var i=0; i<items_count; i++) {
			var pubDate_w, title_w, link_w;
			pubDate_w=(pubDate.length>0)?pubDate[i].firstChild.nodeValue:"<i>Date non renseignée</i>";
			if(document.all)
				title_w=(title.length>0)?title[i].text:"<i>Absence de titre</i>";
			else
				title_w=(title.length>0)?title[i].firstChild.nodeValue:"<i>Absence de titre</i>";

			link_w=(link.length>0)?link[i].firstChild.nodeValue:"";
			if(link.length==0) link_w=(guid.length>0)?guid[i].firstChild.nodeValue:"";
			if(title.length>0) title_w=(!ws.test(title_w))?"<i>Absence de titre</i>":title_w;
			if(pubDate.length==0) pubDate_w=(date.length>0)?date[i].firstChild.nodeValue:"<i></i>";
			document.write('<a href="'+link_w+'"><b>'+title_w+'</b></a> <br>');
			if(description.length>0)
				document.write('<font size="-1">'+description[i].firstChild.nodeValue+'</font><br>');
		}
	}

	if(typeof(xmlDoc)!="undefined") {
		if(window.ActiveXObject) formatRSS();
		else xmlDoc.onload=formatRSS;
	}
}
</script>

Dans le corps de la page à l'endroit où vous voulez voir les fils :
Code:
<ul>
<script language="JavaScript">
	readRSS("http://www.lemonde.fr/rss/sequence/0,2-3244,1-0,0.xml");
    </script>
</ul>
<ul>
<script language="JavaScript">
	readRSS("http://www.lexpress.fr/getfeedrss.asp?feed=sciences");
</script>
</ul>
<img border="0" src="./images/obslogo90.gif" width="90" height="59">
<ul>
<script language="JavaScript">
	readRSS("http://sciences.nouvelobs.com/rss_sea.xml");
</script>
</ul>

Si ceci peut aider.
 
Discussions similaires
Haut