Start · Sprachen · JavaScript · Referenz · Window.menubar

Window.menubar

Eigenschaft

Gibt ein <code>BarProp</code>-Objekt zurück, dessen Eigenschaft <code>visible</code> anzeigt, ob die Menüleiste des Browserfensters sichtbar ist.

seit JavaScript Baseline: alle modernen Browser Kategorie: webapi

Signatur

Window.menubar

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

Typ
BarProp
Beschreibung
Ein 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}`);
true Menüleiste sichtbar: true

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.');
}
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);
  });
});
Menüleiste im Popup: false

// Wichtig · Fallstricke

  • Nur lesbar: Eine Zuweisung wie window.menubar.visible = false wird 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.menubar eines fremden Fensters kann man nur bei gleicher Herkunft (Same Origin) zugreifen, sonst gibt es einen SecurityError.
  • Kompatibilität: Wird von allen modernen Browsern unterstützt. Das Verhalten „false im Popup“ wurde erst mit dem HTML-Standard vereinheitlicht (etwa 2022). Ältere Browser liefern teils immer true, darum ist der Wert keine sichere Popup-Erkennung.