Signatur
Beschreibung
Die Eigenschaft media eines MediaQueryList-Objekts enthält die Medienabfrage, die beim Aufruf von window.matchMedia() übergeben wurde, als serialisierten String. Sie ist schreibgeschützt. Die Abfrage lässt sich also nachträglich nicht ändern. Brauchen Sie eine andere Abfrage, erzeugen Sie mit matchMedia() ein neues Objekt.
Nützlich ist media vor allem dann, wenn mehrere MediaQueryList-Objekte denselben change-Handler teilen. Über event.media oder mql.media erkennen Sie dann, welche Abfrage gerade umgeschaltet hat. Auch beim Debuggen und Loggen hilft die Eigenschaft.
Wichtig: Der Browser gibt den String serialisiert zurück, also in normalisierter Form. Leerzeichen und Groß-/Kleinschreibung können vom Original abweichen. Ist die Abfrage ungültig, liefert media den String "not all".
Rückgabewert
"(min-width: 768px)". Bei einer ungültigen Abfrage ist der Wert "not all".Beispiele
Medienabfrage auslesen
const mql = window.matchMedia('(max-width: 600px)');
console.log(mql.media);
console.log(mql.matches ? 'Mobil-Layout' : 'Desktop-Layout');
Gemeinsamer change-Handler für mehrere Breakpoints
const queries = ['(max-width: 599px)', '(min-width: 600px) and (max-width: 1023px)', '(min-width: 1024px)'];
const handleChange = (event) => {
// event.media entspricht mql.media des auslösenden Objekts
if (event.matches) {
console.log(`Aktiver Breakpoint: ${event.media}`);
}
};
for (const q of queries) {
const mql = window.matchMedia(q);
mql.addEventListener('change', handleChange);
if (mql.matches) console.log(`Start-Breakpoint: ${mql.media}`);
}
Normalisierung und ungültige Abfragen erkennen
const normalized = window.matchMedia('(MIN-WIDTH:500px)');
console.log(normalized.media);
const invalid = window.matchMedia('foo bar baz');
console.log(invalid.media);
const isValidQuery = (q) => window.matchMedia(q).media !== 'not all';
console.log(isValidQuery('(prefers-color-scheme: dark)'));
Dark-Mode-Status protokollieren
const darkMql = window.matchMedia('(prefers-color-scheme: dark)');
const logScheme = ({ media, matches }) => {
console.log(`${media} → ${matches ? 'aktiv' : 'inaktiv'}`);
};
logScheme(darkMql);
darkMql.addEventListener('change', logScheme);
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung wie
mql.media = '...'bewirkt nichts. Im Strict Mode wirft sie einenTypeError. Für eine andere Abfrage rufen SiematchMedia()neu auf. - Serialisierung: Vergleichen Sie
medianicht per String-Gleichheit mit Ihrer Originaleingabe. Der Browser normalisiert Leerzeichen und Kleinschreibung. Das genaue Ergebnis kann sich zwischen Browsern leicht unterscheiden. Besser ist es, die Referenz auf dasMediaQueryList-Objekt zu vergleichen. - Ungültige Abfragen lösen keinen Fehler aus. Sie liefern stattdessen
media === "not all"undmatches === false. - Kompatibilität: Die Eigenschaft wird in allen modernen Browsern unterstützt.
addEventListener('change', …)aufMediaQueryListfunktioniert in Safari erst ab Version 14. Ältere Safari-Versionen brauchen das veralteteaddListener().