Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: XML ja selainten yhteensopivuus

slitzu [17.10.2006 09:34:09]

#

Onkohan olemassa helppoa ratkaisua saada esim. IE ja Firefox lukemaan XML-tiedoston rakennetta samalla tavalla Javascriptilla?

Tähän asti olen tehnyt aina kummallekin selaimelle eri funktiot tähän tyyliin:

function haeKuva(i) {
		var x = xmlDoc.getElementsByTagName("kuva");
		var kuva = x[i].childNodes[0].firstChild.nodeValue + '.jpg';
		return kuva;
}

function haeKuvaFf(i) {
		var x = xmlDoc.getElementsByTagName("kuva");
		var kuva = x[i].childNodes[1].firstChild.nodeValue + '.jpg';
		return kuva;
}

XML-tiedoston rakenne on tällainen:

<?xml version="1.0" encoding="ISO-8859-1"?>
<kuvat>
	<kuva>
		<tiedosto>akula</tiedosto>
		<info>Akula-luokan sukellusvene</info>
	</kuva>
</kuvat>

Ongelma on siis se, että kun IE lukee solmun 0 (=ensimmäinen solmu juuren jälkeen) niin FF käsittää sen juureksi, eli joudun FF:ää varten lukemaan solmun 1. Sitten, kun haluan saada kuvan infotekstin, niin IE lukee sen solmusta 1, mutta FF solmusta 3, koska FF:n mielestä </info><info> on ilmeisesti solmu 2 (??).

Olga [17.10.2006 13:03:32]

#

Firefoxissa (ja ilmeisesti esimeriksi Operassakin) noiden solmujen välillä on tyhjä tekstisolmu, sillä solmujen välissä on whitespacea. Useampiakin vaihtoehtoja löytyy, mutta itse Prototype-kirjaston ystävänä vetäisisin tuon childNodes-nodelistin Element.cleanWhitespace-funktion läpi ja homma on sillä selvä. Toinen hieman purkempi vaihtoehto olisi hakea esimerkiksi tuo tiedosto-tagin sisältö seuraavasti:

var kuva = x[i].getElementsByTagName("tiedosto")[0].firstChild.nodeValue + '.jpg';

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta