Start · Sprachen · JavaScript · Referenz · BarProp.visible

BarProp.visible

Eigenschaft

Schreibgeschützter Wahrheitswert, der angibt, ob das durch ein <code>BarProp</code>-Objekt repräsentierte Browser-Bedienelement (z. B. Adress- oder Menüleiste) sichtbar ist.

seit JavaScript Baseline: alle Browser (vereinheitlichtes Popup-Ve Kategorie: webapi

Signatur

BarProp.visible

Beschreibung

Die Eigenschaft visible gehört zur Schnittstelle BarProp. Instanzen davon erreicht man über die Fenster-Eigenschaften window.locationbar, window.menubar, window.personalbar, window.scrollbars, window.statusbar und window.toolbar. Jede davon steht für ein Element der Browser-Oberfläche außerhalb des Seiteninhalts.

Laut aktueller HTML-Spezifikation liefern Browser aus Datenschutzgründen keine echten Angaben mehr zu den einzelnen Leisten. Stattdessen geben alle sechs BarProp-Objekte denselben Wert zurück: false, wenn das Fenster ein Popup ist (etwa durch window.open() mit Größen- oder Feature-Angaben geöffnet), und sonst true. Praktisch nutzt man visible deshalb vor allem, um zu erkennen, ob die eigene Seite in einem minimalen Popup-Fenster läuft.

Brauchbar ist das zum Beispiel für OAuth- oder Zahlungs-Popups, die sich anders verhalten sollen als ein normaler Tab. Denkbar ist etwa ein „Fenster schließen“-Button statt einer vollständigen Navigation. Auch Layout-Anpassungen für kleine Hilfsfenster sind möglich.

Rückgabewert

Typ
boolean
Beschreibung
true, wenn das Bedienelement als sichtbar gilt (normales Fenster oder normaler Tab), false, wenn das Fenster ein Popup ist. Die Eigenschaft ist schreibgeschützt.

Beispiele

Sichtbarkeit aller Leisten ausgeben

const bars = ['locationbar', 'menubar', 'personalbar', 'scrollbars', 'statusbar', 'toolbar'];

for (const name of bars) {
  console.log(`${name}: ${window[name].visible}`);
}
locationbar: true menubar: true personalbar: true scrollbars: true statusbar: true toolbar: true

Erkennen, ob die Seite in einem Popup läuft

const isPopup = !window.toolbar.visible;

if (isPopup) {
  // Im Popup: kompaktes Layout und Schließen-Button anzeigen
  document.body.classList.add('popup-mode');
  const btn = document.createElement('button');
  btn.textContent = 'Fenster schließen';
  btn.addEventListener('click', () => window.close());
  document.body.append(btn);
}

console.log(isPopup ? 'Popup-Fenster' : 'Normales Fenster');
Normales Fenster

Popup öffnen und dessen Status prüfen

// Größenangaben führen dazu, dass ein Popup geöffnet wird
const popup = window.open('/login', 'login', 'popup,width=480,height=600');

popup?.addEventListener('load', () => {
  // Funktioniert nur bei gleicher Origin
  console.log('Adressleiste sichtbar?', popup.locationbar.visible);
});
Adressleiste sichtbar? false

// Wichtig · Fallstricke

  • Keine echte Aussage pro Leiste: Moderne Browser geben für alle BarProp-Objekte denselben Wert zurück. Das soll Fingerprinting verhindern. Ob der Nutzer etwa die Lesezeichenleiste ausgeblendet hat, lässt sich damit nicht feststellen.
  • Schreibgeschützt: Früher erlaubten manche Browser (z. B. Firefox mit erweiterten Rechten) das Setzen von visible. Heute wird eine Zuweisung stillschweigend ignoriert und löst im Strict Mode keinen Fehler aus.
  • Uneinheitliches Verhalten in älteren Browsern: Vor der Vereinheitlichung (ungefähr 2021/2022) lieferten Chrome, Firefox und Safari teils abweichende Werte, z. B. immer true. Für eine robuste Popup-Erkennung kann man zusätzlich window.opener prüfen.
  • Zugriff über Fenstergrenzen hinweg: Auf popup.toolbar.visible eines anderen Fensters kann man nur bei gleicher Origin zugreifen, sonst wird ein SecurityError geworfen.