Kurz: Der Browser bringt viele eingebaute Schnittstellen (APIs) mit. Hier die wichtigsten für den Alltag.
Teil des Kurses JavaScript
Kapitel 32 von 40 im Kurs JavaScript. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.
Der Browser bringt viele eingebaute Schnittstellen (APIs) mit. Hier die wichtigsten für den Alltag.
URL und Adressleiste
const url = new URL("https://beispiel.de/suche?q=java+script&seite=2#ergebnis");
console.log(url.hostname, url.pathname);
console.log(url.searchParams.get("q"), url.searchParams.get("seite"));
console.log(url.hash);
url.searchParams.set("seite", 3);
url.searchParams.append("tag", "neu");
console.log(url.toString());
console.log(new URLSearchParams({ a: 1, b: "x y" }).toString());
console.log(encodeURIComponent("Köln & Bonn"));Ausgabe:
beispiel.de /suche
java script 2
#ergebnis
https://beispiel.de/suche?q=java+script&seite=3&tag=neu#ergebnis
a=1&b=x+y
K%C3%B6ln%20%26%20BonnIm Browser liest location.search die aktuelle Adresse; history.pushState(daten, "", "/neu") ändert die Adresse ohne Neuladen (so arbeiten Single-Page-Apps).
Zwischenablage
await navigator.clipboard.writeText("Kopierter Text");
const text = await navigator.clipboard.readText(); // fragt um ErlaubnisDas Schreiben funktioniert nach einer Nutzeraktion (z. B. Klick) und nur über HTTPS.
Beobachter
IntersectionObserver meldet, wenn Elemente sichtbar werden (Nachladen von Bildern, Animationen beim Scrollen):
const beobachter = new IntersectionObserver((eintraege) => {
for (const e of eintraege) {
if (e.isIntersecting) {
e.target.classList.add("sichtbar");
beobachter.unobserve(e.target);
}
}
}, { threshold: 0.2 });
document.querySelectorAll(".karte").forEach(k => beobachter.observe(k));Weitere Beobachter: ResizeObserver (Größenänderung eines Elements), MutationObserver (Änderungen im DOM).
Standort und Geräte
navigator.geolocation.getCurrentPosition(
(pos) => console.log(pos.coords.latitude, pos.coords.longitude),
(fehler) => console.log("Abgelehnt oder nicht verfügbar:", fehler.message),
);Der Browser fragt die Nutzerin immer um Erlaubnis. Dasselbe gilt für Kamera und Mikrofon (navigator.mediaDevices.getUserMedia), Benachrichtigungen und Bluetooth. Frage nur, wenn du es wirklich brauchst, und erkläre vorher warum.
Medien und Sprache
new Audio("ton.mp3").play()spielt Töne (nach Nutzerklick erlaubt)speechSynthesis.speak(new SpeechSynthesisUtterance("Hallo"))liest Text vormatchMedia("(prefers-color-scheme: dark)").matchesfragt Systemeinstellungen ab
const farbe = typeof matchMedia === "function" ? matchMedia("(prefers-color-scheme: dark)").matches : "nur im Browser";
console.log(typeof farbe);Ausgabe:
stringWeb Worker: Arbeit im Hintergrund
Ein Web Worker läuft in einem eigenen Thread, ohne die Seite zu blockieren:
// haupt.js
const worker = new Worker("rechner.js");
worker.postMessage({ bis: 1e8 });
worker.onmessage = (e) => console.log("Ergebnis:", e.data);
// rechner.js
onmessage = (e) => {
let s = 0;
for (let i = 0; i < e.data.bis; i++) s += i;
postMessage(s);
};Worker haben keinen Zugriff aufs DOM; sie tauschen Nachrichten (postMessage) aus.
Service Worker und PWA
Ein Service Worker steht zwischen Seite und Netzwerk: Er kann Antworten zwischenspeichern, Offline-Betrieb ermöglichen und Push-Nachrichten empfangen. Zusammen mit einem Web-App-Manifest wird eine Seite zur installierbaren Progressive Web App.
Zufall und Krypto
const bytes = crypto.getRandomValues(new Uint8Array(4));
console.log(bytes.length, typeof crypto.randomUUID());
const uuid = crypto.randomUUID();
console.log(uuid.length, uuid[14]);Ausgabe:
4 string
36 4Für Passwörter, Tokens und Schlüssel verwendest du crypto, nie Math.random().
Fähigkeiten prüfen statt Browser raten
Prüfe, ob eine Funktion existiert, bevor du sie benutzt (Feature Detection):
if ("clipboard" in (globalThis.navigator ?? {})) console.log("Zwischenablage-API vorhanden");
else console.log("keine Zwischenablage-API hier");
console.log(typeof structuredClone, typeof fetch, typeof IntersectionObserver);Ausgabe:
keine Zwischenablage-API hier
function function undefinedAuf <https://developer.mozilla.org> (MDN) findest du zu jeder API Beschreibung, Beispiele und eine Tabelle, welche Browser sie unterstützen.
Merke
URLundURLSearchParamszerlegen und bauen Adressen sicher- Beobachter (
IntersectionObserver& Co.) ersetzen Scroll-Abfragen - Sensible APIs (Standort, Kamera) fragen immer um Erlaubnis
- Web Worker verlagern schwere Arbeit aus dem Hauptthread
cryptofür Zufall mit Sicherheitsanspruch; Feature Detection statt Browser-Raten
Übungsaufgabe
Lies mit URL die Parameter aus einer Beispieladresse, ändere einen und gib die neue Adresse aus.
Quiz zur Selbstkontrolle
Welche API meldet, wenn ein Element sichtbar wird?
- IntersectionObserver (richtig)
- ScrollListener
- VisibleEvent
- ViewWatcher
Wofür dient ein Web Worker?
- Schwere Berechnungen im Hintergrund, ohne die Seite zu blockieren (richtig)
- Für Animationen im DOM
- Für CSS
- Für Cookies
Was nimmst du für sichere Zufallswerte?
- crypto.getRandomValues (richtig)
- Math.random
- Date.now
- performance.now
Weiter im Kurs
Zurück: Daten im Browser speichern
Weiter: Zeichnen mit Canvas und Animation
Alle Kapitel: JavaScript im Überblick