Om widgets te kunnen maken op pagina's als netvibes heb ik het volgende bedacht:
Op de pagina kun je dit neerzetten:
Via de externe javascript kun je dan cross domain een rss feed parsen.
Dit is de code die we op onze server zetten:
Het php scriptje zet de feed om naar een array en output deze met json_encode
Dat werkt allemaal prima in Firefox, IE geeft echter eerst een error, maar toont de feed daarna wel. In IE wordt de functie parseXML twee keer uitgevoerd; één keer zonder argumenten.
Komt dat door de reference die gegeven wordt in
IE debuggen is niet zo fijn en ik zie niet waardoor de functie 2x aangeroepen kan worden.
Iemand een idee?
Op de pagina kun je dit neerzetten:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <script type="text/javascript" src="http://www.swis.nl/tribal/widget.class.js"></script> <script type="text/javascript"> oWidget = new widget(); oWidget.load('http://www.nu.nl/deeplink_rss2/index.jsp?r=Algemeen'); oWidget.call(parseXML); function parseXML(aContent){ var div = document.getElementById('test'); var sContent = ''; for (var i=0; i < aContent.length; i++){ sContent += '<h1>' + aContent[i]['title'] + '</h1>' + aContent[i]['description'] + '<hr />'; } div.innerHTML = sContent; } </script> |
Via de externe javascript kun je dan cross domain een rss feed parsen.
Dit is de code die we op onze server zetten:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| var __GLOBAL_XML_RESULT__; function widget(){ this.load = function(sUri){ this.s = document.createElement('script'); this.s.type = 'text/javascript'; this.s.src = 'http://www.swis.nl/tribal/getxml.php?uri=' + sUri; document.getElementsByTagName('head')[0].appendChild(this.s); this.s.onload = attachEventHandler(this, 'getContent'); this.s.onreadystatechange = attachEventHandler(this, 'getContent'); }; this.call = function(oFunction){ this.functionCall = oFunction; } this.getContent = function(){ this.functionCall(__GLOBAL_XML_RESULT__); }; } function attachEventHandler(oObject, sMethodName) { return function () { return oObject[sMethodName].apply(oObject, arguments); }; } |
Het php scriptje zet de feed om naar een array en output deze met json_encode
Dat werkt allemaal prima in Firefox, IE geeft echter eerst een error, maar toont de feed daarna wel. In IE wordt de functie parseXML twee keer uitgevoerd; één keer zonder argumenten.
Komt dat door de reference die gegeven wordt in
JavaScript:
1
| oWidget.call(parseXML); |
IE debuggen is niet zo fijn en ik zie niet waardoor de functie 2x aangeroepen kan worden.
Iemand een idee?