Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Windows NT, IE6 ja getElementById

Sivun loppuun

slitzu [24.11.2006 07:25:16]

#

Onko kukaan törmänny vastaavanlaiseen ongelmaan, että tuo javascriptissä käytetty getDocumentById ei toimisi nimenomaan Windows NT:n IE6 selaimella, vaikka XP-ympäristössä toimii mallikkaasti niin IE:llä, FF:llä kuin Operallakin?

Ongelmallisen selaimen versionumero on 6.0.2800.1106 SP1 ja virheilmoitus on kutakuinkin tätä luokkaa: document.getElementById(...) is null or not an object.

Elementti, jota tuossa todennäköisesti ei löydy on html-sivun divi, jolla on id. Googlettamalla löysin, että IE saattaisi tunnistaa myös jos id:n lisäksi elementille antaa name-parametrin. Onko kellään vastaavanlaista kokemusta?

Mod. Otsikko

Olga [24.11.2006 08:40:40]

#

Kuulostaapa merkilliseltä. Voitko laittaa esimerkkikoodin tai -sivun jossa moinen ilmenee?

slitzu [24.11.2006 09:12:05]

#

Kyseessä on siis tavallinen html-sivu, jossa on divi. Tähän diviin ladataan javascriptillä xml-tiedostosta tavaraa ja tuohon diviin viitataan js-funktiosta käsin tyyliin

document.getElementById("divinid").innerHTML=xmlTavaraa;

Merri [24.11.2006 09:30:55]

#

Yksi mahdollisuus on käyttää hyväksi IE:n epästandardimaisuutta, mutta siten että muutkin selaimet saadaan toimimaan standardien mukaan. Elikkä siis:

if (!divinid) var divinid = document.getElementById('divinid');
if (divinid) divinid.innerHTML = xmlTavaraa;

IE siis automaattisesti luo muuttujan jokaiselle ID-elementille. Ja tosiaan, IE6 ei tee erottelua ID ja NAME-elementtien välille, joten kannattaa suunnitella sivu siten, ettei siellä ole samoja ID ja NAME -elementtejä ihan vaan varmuuden välttämiseksi. NAME-attribuuttiahan kuitenkin kannattaa käyttää vain lomakkeissa, joten se vähentää hieman ongelmallisuutta.

Tietenkin koko sivu olisi voinut olla hyvä esimerkki, jotta sen toimivuutta olisi voinut testata muissakin ympäristöissä.

Olga [24.11.2006 11:37:54]

#

Lähinnä kävi vaan mielessä että yritätkö hakea diviä ennen kuin se on sivulle luotu, mutta jos tuo toimii kaikissa muissa ympäristöissä oikein, ei sekään liene syynä ongelmaan.

slitzu [24.11.2006 13:33:31]

#

Divi on luotu staattisesti siinä vaiheessa, kun käyttäjälle ladataan auki kyseinen html-sivu. Divin sisältö luodaan taas javascriptin avulla lennossa.

tsuriga [24.11.2006 13:52:16]

#

http://mureakuha.com/keskustelut/9?13458

slitzu [27.11.2006 11:25:36]

#

Sivu latautuu ihan oikein myös NT:n IE6:lla JOS tätä ennen

document.getElementById("divinid").innerHTML=xmlTavaraa;

prompttaan ruudulle saman koodin näin:

alert(xmlTavaraa);

Onko mahdollista, että alkuperäinen virhe johtuisi siitä, ettei xml-tiedosto ehdi latautua selaimeen?

Merri [27.11.2006 14:07:56]

#

Vaikea sanoa mitään, koska emme edelleenkään tiedä muusta koodista oikeastaan mitään.

Olga [27.11.2006 20:21:04]

#

Kyllähän moinen on mahdollista, jos lataan xml:n asynkronisesti. Jos voit laittaa tuolle xml-kyselyn responderiksi jonkun callback-funktion (onpa hyvää suomea), voit sinne laittaa tuon diviin kirjoittamisen. Mutta kuten tässä ovat monet (itseni mukaanlukien) jo todenneet, ilman esimerkkikoodia on tosi vaikeaa veikkailla ongelman syytä.


Sivun alkuun

Vastaus

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

Tietoa sivustosta