Signatur
Beschreibung
Die schreibgeschützte Eigenschaft window.outerWidth gibt die Breite des gesamten Browserfensters zurück. Anders als window.innerWidth, das nur den Viewport inklusive vertikalem Scrollbalken misst, zählen hier auch Fensterrahmen, Größenziehgriffe und seitlich angedockte Elemente mit, etwa Lesezeichen- oder Entwickler-Seitenleisten.
Der Wert ist eine ganze Zahl in CSS-Pixeln, er hängt also vom Zoomfaktor ab. Wird die Seite vergrößert, sinkt outerWidth, obwohl sich die tatsächliche Fenstergröße auf dem Bildschirm nicht ändert.
Typische Einsatzfälle sind das Positionieren oder Zentrieren von Pop-up-Fenstern mit window.open(), das Erkennen, ob ein seitlich angedocktes Entwicklerwerkzeug geöffnet ist (Differenz zu innerWidth), und das Erfassen von Fenstergrößen für Diagnose- oder Telemetriezwecke. Für responsives Layout ist outerWidth dagegen nicht geeignet, dafür gibt es innerWidth, document.documentElement.clientWidth oder CSS-Media-Queries.
Um die Fenstergröße zu ändern, benutzt man window.resizeTo() oder window.resizeBy(). Die Eigenschaft selbst ist schreibgeschützt.
Rückgabewert
Beispiele
Äußere und innere Breite vergleichen
const aussen = window.outerWidth;
const innen = window.innerWidth;
console.log(`Fenster: ${aussen}px, Viewport: ${innen}px`);
console.log(`Rahmen/Seitenleisten: ${aussen - innen}px`);
Pop-up zentriert über dem aktuellen Fenster öffnen
const openCenteredPopup = (url, width = 500, height = 600) => {
// Position relativ zum aktuellen Fenster berechnen
const left = window.screenX + (window.outerWidth - width) / 2;
const top = window.screenY + (window.outerHeight - height) / 2;
return window.open(
url,
'login',
`width=${width},height=${height},left=${Math.round(left)},top=${Math.round(top)}`
);
};
document.querySelector('#login-btn')?.addEventListener('click', () => {
openCenteredPopup('https://example.com/oauth');
});
Seitlich angedockte DevTools grob erkennen
const SCHWELLE = 160; // Pixel
const pruefeSeitenleiste = () => {
const differenz = window.outerWidth - window.innerWidth;
const vermutlichOffen = differenz > SCHWELLE;
console.log(`Differenz: ${differenz}px – Seitenleiste offen: ${vermutlichOffen}`);
};
window.addEventListener('resize', pruefeSeitenleiste);
pruefeSeitenleiste();
// Wichtig · Fallstricke
- Zoom-Abhängigkeit: Der Wert wird in CSS-Pixeln angegeben. Bei 200 % Zoom ist
outerWidthungefähr halb so groß. Für echte Gerätepixel multipliziert man mitwindow.devicePixelRatio, das Ergebnis ist trotzdem nur eine Näherung. - Nicht für Layout verwenden: Media-Queries und
innerWidthbeziehen sich auf den Viewport.outerWidthweicht davon je nach Betriebssystem, Rahmen und Seitenleisten ab. - Mobile Browser: Auf Smartphones und Tablets ist der Wert oft identisch mit
innerWidthoder der Bildschirmbreite. Manche ältere mobile Browser liefern0oder Gerätepixel. - iframes: Auch innerhalb eines iframes liefert
outerWidthdie Breite des obersten Browserfensters, nicht die des iframes. - DevTools-Erkennung: Die Differenz zu
innerWidthtaugt nur als grobe Schätzung. Losgelöste DevTools-Fenster werden so nicht erkannt. Als Sicherheitsmechanismus ist das ungeeignet. - Datenschutz: Fenstermaße tragen zum Browser-Fingerprinting bei. Einige Browser (z. B. Tor Browser, Firefox mit
resistFingerprinting) runden sie oder setzen sie gleichinnerWidth. - Kompatibilität: Wird von allen modernen Browsern unterstützt. Zum Überwachen von Größenänderungen hört man auf das
resize-Event.