Tuple Logo
browser-object-model-bom

SHARE

Browser Object Model (BOM)

Wat is het Browser Object Model (BOM)?

Het Browser Object Model (BOM) is een verzameling van objecten die je via JavaScript kunt gebruiken om direct met de browser te communiceren. In tegenstelling tot het Document Object Model (DOM), dat draait om de structuur en inhoud van de webpagina, gaat het bij BOM om alles wat daarbuiten valt: het browservenster, de navigatiegeschiedenis, de locatiebalk, enzovoort.

BOM wordt niet officieel gestandaardiseerd door een organisatie zoals het W3C (dat wel de DOM specificeert), maar is desondanks breed ondersteund door alle moderne browsers. De implementatie kan iets verschillen per browser, maar de basisobjecten zijn vrijwel overal beschikbaar.

Verschil tussen BOM en DOM

Hoewel ze vaak samen worden gebruikt, verschillen BOM en DOM duidelijk van elkaar:

KenmerkDOMBOM
Wat het beschrijftDe inhoud en structuur van de webpaginaDe browseromgeving buiten de pagina
Belangrijkste objectdocumentwindow
GestandaardiseerdJa (W3C)Nee (browser-specifiek)
Voorbeeldendocument.getElementById()window.open()

Je kunt het zo zien: DOM laat je werken met de inhoud van de pagina, BOM met de omgeving waarin die pagina draait.

Hoe BOM functioneert in de browser

In elke browser is het hoogste object in de hiërarchie het window object. Dit window object bevat allerlei subobjecten zoals navigator, location, history, screen, en andere functies zoals alert() en setTimeout(). Dit maakt het mogelijk om met één object bijna alle browsergerelateerde acties uit te voeren.

De structuur van BOM ziet er bijvoorbeeld zo uit:

window
├── navigator
├── location
├── history
├── screen
├── alert()
├── setTimeout()
└── ...

Omdat window standaard is in de browseromgeving, hoef je het niet expliciet aan te roepen. alert("Hi") is dus gelijk aan window.alert("Hi").

Waarom het Browser Object Model belangrijk is

Het Browser Object Model speelt een essentiële rol bij de interactie tussen een webpagina en de browser waarin deze wordt geladen. Zonder BOM zou je met JavaScript alleen de HTML-structuur kunnen aanpassen, maar niet kunnen inspelen op de context waarin de pagina draait.

Toegang tot browserfunctionaliteit

Via het BOM heb je toegang tot functies die verder gaan dan alleen de inhoud van een webpagina. Je kunt bijvoorbeeld:

Deze functies zijn cruciaal voor het bouwen van interactieve en gebruiksvriendelijke websites.

Interactie met de gebruikersomgeving

Het BOM maakt het ook mogelijk om informatie op te vragen over de omgeving van de gebruiker. Denk hierbij aan:

Door deze informatie slim te gebruiken, kun je de gebruikerservaring aanpassen aan het apparaat of de voorkeuren van de bezoeker.

Ondersteuning van dynamische webapplicaties

In moderne webapplicaties speelt BOM een ondersteunende rol. Je kunt er bijvoorbeeld mee bepalen of bepaalde functionaliteiten beschikbaar zijn (zoals geolocatie via navigator.geolocation) of tijdelijk data opslaan in window.localStorage.

Hoewel veel frameworks en libraries tegenwoordig bepaalde abstracties bieden, blijft het BOM belangrijk voor:

De kern van BOM: het window object

Het window object vormt de basis van het Browser Object Model. Alles binnen het BOM valt hier direct of indirect onder. In een browseromgeving is window het globale object, wat betekent dat alle globale variabelen en functies hieraan zijn gekoppeld.

Het window object uitgelegd

Wanneer je een JavaScript-bestand uitvoert in de browser, gebeurt dat binnen de context van het window object. Alle methodes en eigenschappen van het BOM zijn hier onderdeel van. Je hoeft window vaak niet expliciet te gebruiken, omdat het impliciet aanwezig is.

Bijvoorbeeld:

alert("Hallo!");

is exact hetzelfde als:

window.alert("Hallo!");

En dit geldt ook voor andere functies zoals setTimeout, setInterval, of het benaderen van andere BOM-objecten zoals window.location of window.history.

Relatie met andere objecten

Het window object is de container voor meerdere subobjecten en functies. Deze subobjecten geven toegang tot verschillende onderdelen van de browser:

Je kunt het window object zien als de toegangspoort tot alles wat de browser beschikbaar stelt, zowel op pagina-niveau (DOM) als op browser-niveau (BOM).

Voorbeeld: gebruik van window.alert()

function greetUser() {
  window.alert("Welkom op onze website!");
}

In dit voorbeeld roept de functie begroeting() een pop-up op met behulp van window.alert(). Deze methode pauzeert de uitvoering van de pagina totdat de gebruiker op OK klikt, handig voor eenvoudige meldingen of waarschuwingen.

Belangrijke objecten binnen het BOM

Het window object vormt het fundament van het Browser Object Model, maar de echte kracht komt van de subobjecten die eraan verbonden zijn. Deze objecten geven je toegang tot specifieke functionaliteiten binnen de browser.

location object

Het location object bevat informatie over de huidige URL van de pagina en biedt methodes om de browser naar een andere locatie te sturen.

Voorbeelden:

console.log(window.location.href); // Volledige URL
window.location.href = "https://example.com"; // Navigeren naar een andere site

Je kunt ook gebruik maken van andere eigenschappen zoals:

navigator object

Het navigator object geeft informatie over de browser zelf en over bepaalde kenmerken van het apparaat.

Voorbeelden:

console.log(navigator.userAgent); // Browser en platform
console.log(navigator.language);  // Taal van de gebruiker

Veelgebruikte toepassingen zijn:

screen object

Het screen object biedt gegevens over het fysieke scherm van de gebruiker, zoals breedte, hoogte en kleurendiepte. Dit is handig bij het optimaliseren van de gebruikersinterface voor verschillende schermgroottes.

Voorbeeld:

console.log(screen.width);  // Schermbreedte in pixels
console.log(screen.height); // Schermhoogte in pixels

Hoewel het screen object minder vaak wordt gebruikt in moderne responsive design-benaderingen (zoals via CSS media queries), kan het nog steeds relevant zijn in specifieke situaties, zoals fullscreen-modus of game-interfaces.

history object

Het history object laat je interactie hebben met de browsergeschiedenis. Hiermee kun je de gebruiker terugsturen naar een vorige pagina of vooruit navigeren in de sessiegeschiedenis.

Voorbeelden:

window.history.back();    // Ga terug naar de vorige pagina
window.history.forward(); // Ga naar de volgende pagina (indien beschikbaar)

Let op: vanwege beveiligings- en gebruiksvriendelijkheidsoverwegingen is het niet mogelijk om de volledige geschiedenis in te zien of aan te passen.

Praktische toepassingen van het BOM

Hoewel het Browser Object Model vaak op de achtergrond aanwezig is, speelt het in de praktijk een belangrijke rol bij het verbeteren van interactie en functionaliteit op websites. Hieronder bespreken we enkele veelvoorkomende toepassingen van het BOM in moderne webontwikkeling.

Pop-ups openen met window.open()

Met window.open() kun je een nieuw venster of tabblad openen. Dit wordt vaak gebruikt voor externe links, inlogschermen of printweergaves.

Voorbeeld:

window.open("https://voorbeeld.nl", "_blank");

Let op: Veel browsers blokkeren pop-ups als deze niet worden gestart door een directe gebruikersactie, zoals een klik. Gebruik ze dus met mate en alleen als het echt nodig is.

Pagina’s automatisch herladen

Het BOM biedt een eenvoudige manier om een pagina opnieuw te laden met location.reload():

window.location.reload();

Dit wordt gebruikt in situaties waar de pagina-inhoud moet worden ververst na een bepaalde actie, bijvoorbeeld na het verzenden van een formulier of bij foutafhandeling.

Gebruikerservaring personaliseren

Je kunt het BOM gebruiken om de ervaring af te stemmen op de gebruiker. Denk aan:

Voorbeeld:

if (navigator.language.startsWith("en")) {
  alert("Welkom op de Nederlandse versie van onze site!");
}

Navigatie en historie beheren

Met het history object kun je de gebruiker laten navigeren zonder dat je de volledige pagina opnieuw hoeft te laden. Dit is handig bij single-page applications (SPA’s), maar ook bij eenvoudige pagina’s waar teruggaan een logische stap is.

window.history.back(); // Ga één stap terug in de geschiedenis

Of om dynamisch de URL te updaten:

window.history.pushState({}, '', '/nieuw-pad');

Deze techniek wordt vaak gebruikt in combinatie met frameworks zoals React of Vue.

Beperkingen en aandachtspunten

Hoewel het Browser Object Model veel handige mogelijkheden biedt, zijn er ook beperkingen en aandachtspunten waar je als ontwikkelaar rekening mee moet houden. Zeker bij moderne webontwikkeling, waar veiligheid, gebruiksvriendelijkheid en compatibiliteit een grote rol spelen.

Beveiligingsrisico’s

Sommige functies binnen het BOM, zoals window.open() en window.alert(), kunnen worden misbruikt of als hinderlijk worden ervaren. Daarom hebben browsers verschillende beveiligingsmaatregelen ingebouwd:

Gebruik deze functies dus met beleid en vermijd agressieve of ongewenste interacties.

Browsercompatibiliteit

Omdat BOM niet officieel is gestandaardiseerd, kunnen er kleine verschillen bestaan tussen browsers. Moderne browsers zoals Chrome, Firefox, Safari en Edge ondersteunen vrijwel dezelfde BOM-functionaliteiten, maar oudere versies of nichebrowsers kunnen afwijkend gedrag vertonen.

Tip: Controleer browserondersteuning altijd via tools als MDN Web Docs of Can I use.

BOM in moderne JavaScript-frameworks

In moderne frameworks (zoals React, Vue of Angular) wordt direct gebruik van BOM vaak beperkt tot specifieke situaties, zoals:

Frameworks bieden vaak hun eigen methodes om bijvoorbeeld routing of state management te regelen. Toch blijft kennis van het BOM belangrijk voor die momenten waarop je buiten het kader van het framework moet werken.

De rol van BOM in moderne webontwikkeling

Het Browser Object Model blijft een relevant onderdeel van webontwikkeling, ook in een tijd waarin frameworks en libraries steeds meer abstractie bieden. BOM vormt de schakel tussen de webpagina en de browseromgeving en biedt toegang tot functies zoals navigatie, pop-ups, scherminformatie en geschiedenisbeheer.

Hoewel het gebruik van BOM in moderne projecten vaak beperkt is tot specifieke gevallen, is het goed om te begrijpen hoe deze objecten werken. Niet alleen voor directe toepassingen, maar ook voor debugging, browsergedrag te begrijpen of legacy code te onderhouden.

Kort samengevat:

Een goed begrip van het Browser Object Model helpt je als ontwikkelaar om complete, functionele en gebruikersvriendelijke webapplicaties te bouwen.

Veelgestelde vragen
Wat is het Browser Object Model gebruikt voor?

Het Browser Object Model wordt gebruikt om met JavaScript toegang te krijgen tot browserfunctionaliteiten zoals het openen van vensters, navigatie, schermgegevens en gebruikersinformatie.


Wat is DOM en BOM?

DOM (Document Object Model) beschrijft de structuur van de HTML-pagina. BOM (Browser Object Model) biedt toegang tot browsergerelateerde functies zoals locatie, schermgrootte en geschiedenis.


Wat is object model in web technology?

Een object model in webtechnologie is een programmeerbare structuur die de onderdelen van een omgeving representeert. Voor het web zijn dat bijvoorbeeld het DOM voor de pagina-inhoud en het BOM voor de browseromgeving.


Wat is de geschiedenis van het Browser Object Model?

Het BOM ontstond in de beginjaren van het web, toen browsers zoals Netscape extra objecten toevoegden om ontwikkelaars meer controle te geven over de browseromgeving. Hoewel het nooit officieel is gestandaardiseerd, is het sindsdien een vast onderdeel van client-side JavaScript.


Ook interessant

Nieuwsgierig geworden?

Wij vertellen je graag meer!

Contact opnemen
Tuple Logo
Veenendaal (HQ)
De Smalle Zijde 3-05, 3903 LL Veenendaal
info@tuple.nl‭+31 318 24 01 64‬
Snel navigeren
Succesverhalen