hente XML med javascript i IE og Firefox
Jeg forsøger at hente et XML-feed med aktuelle kurser - jeg vil gerne lave valutakurs-omregner, som er ren JavaScript uden nogen krav til serversiden.Nedenstående script henter de aktuelle kurser fra den Europæiske Nationalbank's XML-feed, og viser dem i en tabel på siden.
Det virker fint i IE. Og det virker også i Firefox, men vel at mærke kun hvis du downloader XML-feed'et, og gemmer det i en lokal fil med navn "test.xml", og retter "url" variablen i starten af scriptet herunder... Hvis jeg prøver at læse det oprindelige XML-feed, giver Firefox en fejl.
Det ser således ikke ud til, at det er en fejl i min kode? Men derimod måske et sikkerhedsproblem - måske Firefox ikke tillader at hente XML-feed'et fra et fremmet domæne??
Findes der en anden måde at hente et XML-feed på, i Firefox, hvor man gerne må hente det fra et andet domæne?
Tak!
----------------------------------------------------------------
<html>
<head>
<script type="text/javascript">
var xmlDoc;
function loadXML() {
var url = "http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml";
//var url = "test.xml";
if (window.ActiveXObject) {
// code for IE
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.load(url);
loaded();
} else if (document.implementation && document.implementation.createDocument) {
// code for Mozilla, etc.
xmlDoc = document.implementation.createDocument("", "", null);
xmlDoc.load(url);
xmlDoc.onload = loaded;
} else {
alert('Your browser cannot handle this script');
}
}
var rates = new Array();
function loaded() {
var env = xmlDoc.documentElement;
var env_cube = env.getElementsByTagName("Cube")[0];
var env_cube_cube = env_cube.getElementsByTagName("Cube")[0];
var time = env_cube_cube.getAttribute("time");
var cubes = env_cube_cube.getElementsByTagName("Cube");
for (var i=0; i<cubes.length; i++) {
rates[ cubes[i].getAttribute("currency") ] = parseFloat( cubes[i].getAttribute("rate") );
}
draw_table();
}
function draw_table() {
var table = document.getElementById("p_table");
var html = "<table>";
for (var currency in rates) {
html += "<tr><td>" + currency + "</td><td>" + rates[currency] + "</td></tr>";
}
html += "</table>";
table.innerHTML = html;
}
</script>
</head>
<body onload="loadXML()" bgcolor="white">
<p id="p_table">
</p>
</body>
</html>