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:
document
- Viittaus DOM-puuhun (verkkosivun HTML-sisältö, mutta myös evästeet)navigator
- Selaintiedot (user agent-tunniste, merkistö, jne.)location
- URL-osoitteen hallintahistory
- Selaimen navigointihistoria (edellinen/seuraava)screen
- Näytön fyysiset ominaisuudetconsole
- Kehittäjäkonsoli (debuggaus, lokitus)localStorage
- Tallennus selaimessa (paikallinen, pysyvä)sessionStorage
- Tallennus selaimessa (väliaikainen, istuntokohtainen)
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:
- lukemaan ja muokkaamaan dokumenttin sisältöä
- saamaan tietoja selaimesta
- lukemaan ja hallitsemaan osoiteriviä ja selaimen historiaa
- reagoimaan näytön ja viewportin muutoksiin
- kirjoittamaan viestejä kehittäjäkonsoliin
- hallitsemaan evästeitä
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