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
Kuulostaapa merkilliseltä. Voitko laittaa esimerkkikoodin tai -sivun jossa moinen ilmenee?
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;
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ä.
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.
Divi on luotu staattisesti siinä vaiheessa, kun käyttäjälle ladataan auki kyseinen html-sivu. Divin sisältö luodaan taas javascriptin avulla lennossa.
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?
Vaikea sanoa mitään, koska emme edelleenkään tiedä muusta koodista oikeastaan mitään.
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ä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.