Signatur
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
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}`);
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.');
}
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);
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);
});
// Wichtig · Fallstricke
- Kein echter Zustand: Moderne Browser (Chrome, Edge, Firefox, Safari) liefern für
visiblenicht, 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
personalbareines anderen Fensters kann man nur bei gleichem Ursprung zugreifen, sonst wird einSecurityErrorausgelö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.openerin vielen Fällen aussagekräftiger. Allerdings setztnoopenerdiesen Wert aufnull.