Signatur
Beschreibung
Die schreibgeschützte Eigenschaft window.menubar liefert ein BarProp-Objekt. Dieses hat nur eine relevante Eigenschaft: visible, einen booleschen Wert, der angibt, ob die Menüleiste des Browsers (Datei, Bearbeiten, Ansicht …) für das aktuelle Fenster angezeigt wird.
Praktisch nutzt man menubar.visible vor allem, um festzustellen, ob die Seite in einem Popup-Fenster läuft, das per window.open() mit der Fensterfunktion popup geöffnet wurde. Laut HTML-Standard liefern alle BarProp-Objekte (menubar, toolbar, locationbar, personalbar, scrollbars, statusbar) in einem normalen Browserfenster true und in einem Popup false.
Die Eigenschaft ist nur lesbar. Früher konnte man die Sichtbarkeit in privilegiertem Code (z. B. in alten Firefox-Erweiterungen) setzen; auf normalen Webseiten ist das nicht möglich. Die tatsächliche Sichtbarkeit der Menüleiste im Betriebssystem (z. B. die ausgeblendete Menüleiste unter Windows oder die globale Menüleiste unter macOS) bildet der Wert nicht zuverlässig ab.
Rückgabewert
BarProp-Objekt mit der schreibgeschützten booleschen Eigenschaft visible: true in einem normalen Browserfenster, false in einem Popup-Fenster.Beispiele
Sichtbarkeit der Menüleiste abfragen
const bar = window.menubar;
console.log(bar instanceof BarProp);
console.log(`Menüleiste sichtbar: ${bar.visible}`);
Erkennen, ob die Seite in einem Popup läuft
const isPopup = () => !window.menubar.visible;
if (isPopup()) {
// Kompakte Ansicht für Popup-Fenster aktivieren
document.documentElement.classList.add('popup-modus');
console.log('Seite läuft in einem Popup.');
} else {
console.log('Seite läuft in einem normalen Tab.');
}
Popup öffnen und dessen Menüleiste prüfen
// Muss durch eine Nutzeraktion ausgelöst werden (Popup-Blocker)
document.querySelector('#hilfe').addEventListener('click', () => {
const popup = window.open('/hilfe.html', 'hilfe', 'popup,width=480,height=600');
if (!popup) {
console.warn('Popup wurde blockiert.');
return;
}
popup.addEventListener('load', () => {
// Nur bei gleicher Herkunft (Same Origin) zugreifbar
console.log('Menüleiste im Popup:', popup.menubar.visible);
});
});
// Wichtig · Fallstricke
- Nur lesbar: Eine Zuweisung wie
window.menubar.visible = falsewird auf Webseiten ignoriert; die Menüleiste lässt sich per Skript nicht ein- oder ausblenden. - Kein Abbild der echten Oberfläche: Der Wert zeigt, ob das Fenster als Popup geöffnet wurde, und nicht, ob der Nutzer die Menüleiste im Browser ausgeblendet hat. Alle
BarProp-Eigenschaften liefern normalerweise denselben Wert. - Zugriff über Herkunftsgrenzen: Auf
popup.menubareines fremden Fensters kann man nur bei gleicher Herkunft (Same Origin) zugreifen, sonst gibt es einenSecurityError. - Kompatibilität: Wird von allen modernen Browsern unterstützt. Das Verhalten „
falseim Popup“ wurde erst mit dem HTML-Standard vereinheitlicht (etwa 2022). Ältere Browser liefern teils immertrue, darum ist der Wert keine sichere Popup-Erkennung.