Hyvästi document.write

Kirjoittanut . Liittyy aiheisiin , , , , , , .

Arkistomatskua

Otathan huomioon, että tämä on yli 10 vuotta vanha artikkeli, joten sisältö ei ole välttämättä ihan ajan tasalla. Olin artikkelin kirjoittamishetkellä 22-vuotias.

Rollemaa käyttää melko paljon JavaScriptiä nykyään. Plakaatit jotka jaetaan vain käyttäjäkohtaisesti joko kokoruudulla surffaajille, IE6:n käyttäjille ja pieniruutuisten laitteiden käyttäjille ovat toteutettu JavaScriptillä, kuten myös jotkut pienet klikkeet sivulla.

Tuesday
Creative Commons License photo credit: Tom T

Php:ssa sisällön suoltamiseen on print ja echo, kuten monessa muussakin kielessä, myös muissa kuin toiminnallisissa web-kielissä. JavaScriptissä ei kuitenkaan ole mitään selkeää tulostusmuotoa. Usein käytetty document.write on jo nykyäänkin melko sorsittu tapa suoltaa tavaraa sivulle, mutta itsekin käytin sitä pitkään kun ei ollut muutakaan.

Nyt sitten vihdoinkin päätin keksiä ratkaisun yleiseen ongelmaan, jossa document.write korvaa koko sivuston sisällön määrätyllä asialla. Esimerkiksi Rollemaassa ongelma oli sellainen että joillakin selaimilla ja sivuilla näkyi pelkästään valkoinen tausta ja mustalla tekstillä plakaatti isoruutuisille, pieninäyttöisille ja IE6-surffaajille, vaikka plakaatin pitäisi näkyä tyylitettynä sivuston sisällä (voit kokeilla laittamalla selainikkunan kokoruutuun ja painamalla F5).

Ratkaisu oli yllättävän yksinkertainen, enkä tiedä miksi olen aiemmin mennyt siitä mistä aita on matalin. Kun ennen tapahtuma kävi näin:

document.write(’Moi maailma!’);

Nyt se tapahtuu luomalla haluttuun paikkaan div halutulla id:llä, esimerkiksi <div id=”moi”></div>. Javascript osuus on aivan yhtä helppoa kuin aina ennenkin, vaikka muutama kirjain tuleekin lisää.

document.getElementById(’moi’).innerHTML = ’Moi maailma!’;

Kyseinen pätkä korvaa divin sisällön sivun latautuessa, eikä koko bodyn korvaamisesta ole vaaraa, kuten document.writessa. Suosittelen käyttämään tätä tapaa jatkossa, jos sinäkin olet document.writen petollinen uhri.

Kuva Roni Laukkarisesta

Roni Laukkarinen

Kirjoittaja on 31-vuotias elämäntapanörtti, ammatiltaan yrittäjä ja teknologiajohtaja perustamassaan digitoimistossa, verkkosivujen tekijä, koukussa kirjoittamiseen 5-vuotiaasta. Päivät kuluu monipuolisen musiikkiharrastuksen, retropelien ja koodaamisen parissa, mutta arkea piristyttää myös vaimo ja kaksi lasta. Twitter, leffat ja erikoisoluet lähellä sydäntä.

Lue Rollesta lisää

Reaktiot

Vaadittu kenttä

 

3 kommenttia

  1. Marko

    Heitänpä rollelle vielä yhden vaihtoehdon. Nimittäin jQueryllä sama onnistuu:
    $(”#divinID”).html(”Moi maailma”);

    Joo joo… Olen viime aikoina jQuerystä alkanut pitämään yhä enemmän ja sen APIa tullut selattua useampaan otteeseen niin omien kuin työprojektien takia.

  2. rolle

    Marko, Kiitos vinkistä! Käytän jQueryä joka paikassa, mutta en ole sitä vielä harjaantunut koodaamaan erikseen.

  3. Rolle

    ”Hauskaa” lukea tätä myöhemmin kun perinteisestä javascriptistä olen luopunut jo täysin ja siirynyt koodaamaan pelkkää jQuerya… :)