Start · Sprachen · JavaScript · Referenz · Window.personalbar

Window.personalbar

Eigenschaft

Gibt ein <code>BarProp</code>-Objekt für die persönliche Leiste (Lesezeichenleiste) des Browserfensters zurück, dessen <code>visible</code>-Eigenschaft deren Sichtbarkeit meldet.

seit JavaScript Baseline: alle Browser (seit 2015) Kategorie: webapi

Signatur

get Window.personalbar

Beschreibung

Die schreibgeschützte Eigenschaft window.personalbar liefert ein BarProp-Objekt, das die „persönliche Leiste“ des Browsers darstellt. Gemeint ist damit meist die Lesezeichen- bzw. Favoritenleiste. Das Objekt hat nur eine nützliche Eigenschaft: visible, einen booleschen Wert.

personalbar gehört zu einer Gruppe verwandter Eigenschaften: locationbar, menubar, scrollbars, statusbar und toolbar. Alle geben ein BarProp-Objekt zurück. Ursprünglich sollten Seiten damit erkennen können, ob sie in einem normalen Browserfenster oder in einem Pop-up ohne Bedienelemente laufen.

Aus Datenschutzgründen melden moderne Browser nach dem HTML-Standard nicht mehr den echten Zustand der Leiste. visible ist true, wenn das Fenster ein normales Browserfenster ist (kein Pop-up), und false, wenn es ein Pop-up ist, zum Beispiel über window.open() mit Fenster-Features geöffnet. In der Praxis eignet sich die Eigenschaft also höchstens als einfache Pop-up-Erkennung.

Rückgabewert

Typ
BarProp
Beschreibung
Ein BarProp-Objekt mit der schreibgeschützten booleschen Eigenschaft visible.

Beispiele

Sichtbarkeit der persönlichen Leiste abfragen

const bar = window.personalbar;
console.log(bar instanceof BarProp);
console.log(`Persönliche Leiste sichtbar: ${bar.visible}`);
true Persönliche Leiste sichtbar: true

Pop-up-Fenster erkennen

// In einem normalen Tab ist visible true, in einem Pop-up false
const isPopup = !window.personalbar.visible;

if (isPopup) {
  document.body.classList.add('popup-layout');
  console.log('Seite läuft in einem Pop-up – kompaktes Layout aktiv.');
} else {
  console.log('Seite läuft in einem normalen Browserfenster.');
}
Seite läuft in einem normalen Browserfenster.

Alle BarProp-Eigenschaften im Überblick

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

const status = Object.fromEntries(
  bars.map((name) => [name, window[name]?.visible ?? 'nicht unterstützt'])
);

console.table(status);
{ locationbar: true, menubar: true, personalbar: true, scrollbars: true, statusbar: true, toolbar: true }

Zustand in einem mit window.open() geöffneten Pop-up prüfen

const popup = window.open('/hilfe.html', 'hilfe', 'popup,width=400,height=300');

popup?.addEventListener('load', () => {
  // Gleicher Ursprung vorausgesetzt
  console.log('Pop-up personalbar.visible:', popup.personalbar.visible);
});
Pop-up personalbar.visible: false

// Wichtig · Fallstricke

  • Kein echter Zustand: Moderne Browser (Chrome, Edge, Firefox, Safari) liefern für visible nicht, ob die Lesezeichenleiste tatsächlich eingeblendet ist. Sie melden nur, ob das Fenster ein Pop-up ist. Das hat Datenschutzgründe: Es erschwert Fingerprinting.
  • Schreibgeschützt: Die Sichtbarkeit lässt sich per Skript nicht ändern. Früher gab es in Firefox mit erweiterten Rechten personalbar.visible = false, heute hat das keine Wirkung mehr.
  • Zugriff über Fenstergrenzen: Auf personalbar eines anderen Fensters kann man nur bei gleichem Ursprung zugreifen, sonst wird ein SecurityError ausgelöst.
  • Nicht in Workern: Die Eigenschaft gibt es nur im Window-Kontext, nicht in Web- oder Service-Workern und auch nicht in Node.js.
  • Zur Pop-up-Erkennung ist window.opener in vielen Fällen aussagekräftiger. Allerdings setzt noopener diesen Wert auf null.