DOM

JAVASCRIPT JA DOM KOULUTUSTA VUONNA 2025!

Kurssit saatavilla kautta Suomen. Tule ja varaa oma koulutustapahtumasi
IT-koulutuksen asiantuntijasi, Koulutus- ja konsultointipalvelu KK Mediat

BOM: rajapinta selaimen ja JavaScriptin välissä

BOM:in (Browser Object Model) avulla kehittäjät voivat manipuloida selainikkunaa ja sen eri osia, kuten URL-osoitteita ja selaushistoriaa. BOM-mallin keskeisin fokus on selainikkunan ja sen toimintaympäristön tarjoamien objektien hallinnassa, mikä erottaa sen DOM:sta (Document Object Model), joka puolestaan keskittyy dokumentin rakenteeseen ja sisältöön.

BOM:in ytimessä on yksi pääolio - window. Se edustaa käytännössä koko selainympäristöä. Kaikki muut BOM:n liittyvät ominaisuudet, metodit ja alioliot ovat window-olion ominaisuuksia.

JavaScriptissä window on nk. globaali konteksti. Kun käytät esimerkiksi alert()-funktiota, selain tulkitsee sen automaattisesti window.alert()-muodossa.

Window-olion sisältämistä aliolioista keskeisimmät ovat:

Esimerki BOM mahdollistaa selainikkunan hallinnan seuraavasti:


window.location.href = "https://www.2kmediat.com";  // Siirretään käyttäjä palvelun etusivulle

Näiden ominaisuuksien ansiosta JavaScript pystyy:

BOM-oliot JavaScriptissä

Seuraava listaus käy lävitse referenssin omaisesti BOM:n oliot ja niihin kuuluvat keskeisimmät ominaisuudet, metodit ja tapahtumat. Tämä ei ole täydellinen listaus, vaan enemmänkin "käytännöllinen".

Vaikka listaus on kirjoitettu JavaScriptin näkökulmasta, on hyvä tiedostaa, että BOM on kieliriippumaton rajapinta ja samat toiminnallisuudet ovat löytyneet mm. Internet Explorin aiemmin käyttämästä VBScript-kielestä eri nimikkeillä (esim. JavaScriptin alert on sama kuin VBSCriptin MsgBox).

window – BOM hierarkian ylin olio

window on BOM-hierarkian ylin olio. Kaikki muut BOM-oliot löytyvät sen ominaisuuksina. JavaScriptissä window-olio on oletusviite, joten esim. alert() on sama kuin window.alert()-komento.

Oheinen esimerkki hyödyntää kahta Window-olion metodia:


alert("Tervetuloa sivulle!");  // ilmoitusikkuna 
console.log("Viewportin leveys on: " + window.innerWidth + "px");  // viesti kehittäjäkonsolissa

Window-olion ominaisuudet

  • window.innerWidth / innerHeight – viewportin sisäinen leveys ja korkeus
  • window.outerWidth / outerHeight – viewportin ulkoinen leveys ja korkeus
  • window.location – viite location-olioon
  • window.navigator – viite navigator-olioon
  • window.document – viite DOM-dokumenttiin
  • window.screen – viite screen-olioon
  • window.history – viite history-olioon
  • window.localStorage / sessionStorage – viite localstore ja sessionStorage-olioihin

Window-olion metodit

  • alert(), confirm(), prompt() – näyttävät ponnahdusikkunoita
  • setTimeout(fn, ms), setInterval(fn, ms) – ajastimet
  • window.open(url), window.close(), window.print(), window.focus(), windown.blur() - selainikkunan hallinta

Window-olion tapahtumat

  • onload - ikkunan lataus
  • onresize - ikkunan koon muutos
  • onscroll - ikkunan vieritys
  • onbeforeunload - ikkunen sisällön muutos
  • onerror - virhetilanne

navigator – Selaimen tunnistus

navigator tarjoaa tietoa käyttäjän selaimesta ja sen ominaisuuksista.

Oheinen esimerkki hyödyntää kahta Navigator-olion ominaisuutta:


// Tulostetaan käyttäjän selain ja kieliasetus
console.log("Selain: " + navigator.userAgent);
console.log("Kieliasetus: " + navigator.language);


Navigator-olion ominaisuudet

  • navigator.userAgent – selaimen tarkka tunnistetieto
  • navigator.language – käyttäjän kieliasetus (esim. "fi-FI")
  • navigator.platform – käyttöjärjestelmä (esim. "Win32")
  • navigator.onLine – onko selain verkossa
  • navigator.cookieEnabled – onko evästeet sallittu

Navigator-olion metodit

  • navigator.geolocation.getCurrentPosition() – hakee käyttäjän sijainnin (vaatii käyttäjän suostumuksen)

screen – Näytön tiedot

screen tarjoaa tietoa käyttäjän näytön resoluutiosta.

Esimerkiksi:


// Tulostetaan käyttäjän näytön resoluutio ja tarkkuus
console.log("Näytön koko: " + screen.width + "x" + screen.height);
console.log("Värisyvyys: " + screen.colorDepth + " bittiä");


Screen-olion ominaisuudet

  • screen.width / height – näytön koko pikseleinä
  • screen.availWidth / availHeight – käytettävissä oleva alue (esim. ilman tehtäväpalkkia)
  • screen.colorDepth – värisyvyys (yleensä 24 tai 32)
  • screen.pixelDepth – pikselien bittisyvyys

history – Selaushistoria

history mahdollistaa selaimen edellisen ja seuraavan sivun hallinnan (vain nykyisessä istunnossa).

Esimerkiksi:


if(history.length > 0) {
    document.querySelector("#takaisinNappi").addEventListener("click", () => {
        history.back();
   });
};


history-olion ominaisuudet

  • history.length – monenko sivun mittainen historia on

history-olion metodit

  • history.back() – palaa edelliselle sivulle
  • history.forward() – siirry seuraavalle sivulle
  • history.go(n) – siirry n askelta taakse- tai eteenpäin (esim. go(-2))

location – Sivun osoitetiedot

location-olio tarjoaa tietoa nykyisestä URL-osoitteesta ja mahdollisuuden ohjata sivua toiseen osoitteeseen. Huom! Tämä on käytännössä sama asia kuin document.location. Window.location-ominaisuuden käyttöä suositellaan.

Esimerkiksi:


const urlIlmanParametreja = location.origin + location.pathname;

document.querySelector("#siirryNappi").addEventListener("click", () => {
  location.href = urlIlmanParametreja;
});


location-olion ominaisuudet

  • location.href – koko URL
  • location.protocol – esim. "https:"
  • location.hostname – domain (esim. "2kmediat.com")
  • location.pathname – polku (esim. "/hakemisto/sivu.html")
  • location.search – query string (esim. "?id=123")
  • location.hash – ankkuri (esim. "#osio2")

location-olion metodit

  • location.assign(url) – siirtyy uuteen URL:iin (säilyttää historia)
  • location.replace(url) – korvaa nykyisen URL:in (ei säilytä historiaa)
  • location.reload() – lataa sivun uudelleen

localStorage ja sessionStorage

Nämä tarjoavat tavan tallentaa evästeitä käyttäjän istuntoon tai pysyvästi.

Esimerkiksi:


// Tarkistetaan, onko evästeiden suostumus jo tallennettu localStorageen
if (localStorage.getItem("cookieConsent") !== "true") {
    // Jos ei ole, tallennetaan arvo "true"
    localStorage.setItem("cookieConsent", "true");
    console.log("Evästekäytännön suostumus tallennettu.");
} else {
    console.log("Evästekäytännön suostumus on jo annettu.");
}


localstorage ja sessionStorage-olion metodit

  • setItem(key, value) – tallenna arvo
  • getItem(key) – hae arvo
  • removeItem(key) – poista arvo
  • clear() – tyhjennä kaikki