Start · Sprachen · JavaScript · Referenz · Window.outerHeight

Window.outerHeight

Eigenschaft

Liefert die Höhe des gesamten Browserfensters in CSS-Pixeln – inklusive Symbolleisten, Tab-Leiste, Seitenleisten und Fensterrändern.

seit JavaScript Baseline: alle Browser Kategorie: webapi

Signatur

Window.outerHeight

Beschreibung

Die schreibgeschützte Eigenschaft window.outerHeight gibt die äußere Höhe des Browserfensters als ganze Zahl in CSS-Pixeln zurück. Anders als window.innerHeight, das nur den sichtbaren Inhaltsbereich (Viewport) misst, gehört hier die gesamte „Browser-Oberfläche“ dazu: Titelleiste, Tab-Leiste, Adressleiste, Lesezeichenleiste, gegebenenfalls Seitenleisten sowie Fensterrahmen und Griffe zum Ändern der Größe.

Nützlich ist der Wert vor allem, wenn man die Höhe der Browser-Oberfläche abschätzen will (outerHeight - innerHeight), Popup-Fenster mit window.open() passend platzieren möchte oder einfache Heuristiken braucht, etwa um zu erkennen, ob die Entwicklerwerkzeuge angedockt geöffnet sind.

Für responsives Layout ist outerHeight dagegen nicht geeignet – dafür gibt es innerHeight, document.documentElement.clientHeight, CSS-Media-Queries oder window.visualViewport. Die Eigenschaft lässt sich nicht setzen; um die Fenstergröße zu ändern, dient window.resizeTo() bzw. window.resizeBy() (nur bei selbst geöffneten Popups).

Rückgabewert

Typ
number
Beschreibung
Ganzzahlige Höhe des gesamten Browserfensters in CSS-Pixeln. Der Wert hängt vom Zoomfaktor ab und ist in Iframes gleich dem Wert des obersten Fensters.

Beispiele

Äußere und innere Fensterhöhe vergleichen

const aussen = window.outerHeight;
const innen = window.innerHeight;

console.log(`Fensterhöhe gesamt: ${aussen}px`);
console.log(`Viewport-Höhe: ${innen}px`);
console.log(`Browser-Oberfläche (ca.): ${aussen - innen}px`);
Fensterhöhe gesamt: 1040px Viewport-Höhe: 919px Browser-Oberfläche (ca.): 121px

Popup vertikal zentriert zum aktuellen Fenster öffnen

const oeffnePopup = (url, breite = 500, hoehe = 600) => {
  const top = window.screenY + (window.outerHeight - hoehe) / 2;
  const left = window.screenX + (window.outerWidth - breite) / 2;
  return window.open(
    url,
    'login',
    `popup,width=${breite},height=${hoehe},top=${Math.round(top)},left=${Math.round(left)}`
  );
};

document.querySelector('#login-btn')?.addEventListener('click', () => {
  oeffnePopup('https://example.com/login');
});

Heuristik: angedockte Entwicklerwerkzeuge erkennen

const devToolsVermutlichOffen = () => {
  const schwelle = 200; // Toleranz für normale Symbolleisten
  const hoehenDiff = window.outerHeight - window.innerHeight;
  const breitenDiff = window.outerWidth - window.innerWidth;
  return hoehenDiff > schwelle || breitenDiff > schwelle;
};

window.addEventListener('resize', () => {
  console.log('DevTools offen?', devToolsVermutlichOffen());
});
DevTools offen? false

// Wichtig · Fallstricke

  • Schreibgeschützt: Eine Zuweisung wie window.outerHeight = 800 hat keine Wirkung auf das Fenster. Größenänderungen gehen nur per resizeTo()/resizeBy() und auch nur bei per window.open() erzeugten Popups.
  • Zoom: Der Wert wird in CSS-Pixeln angegeben und ändert sich daher beim Zoomen (Strg + +), obwohl das physische Fenster gleich groß bleibt.
  • Mobile Browser: Auf Smartphones und Tablets entspricht outerHeight oft dem Bildschirm bzw. liefert wenig aussagekräftige Werte; ein- und ausblendende Adressleisten machen die Differenz zu innerHeight unzuverlässig.
  • Iframes: Innerhalb eines Iframes wird die Höhe des äußeren Browserfensters geliefert, nicht die des Iframes.
  • Datenschutz: Einige Browser (z. B. Firefox mit privacy.resistFingerprinting, Tor Browser) runden oder fälschen den Wert, um Fingerprinting zu erschweren – nicht für sicherheitskritische Logik verwenden.
  • DevTools-Erkennung über die Höhendifferenz ist nur eine Heuristik und schlägt bei abgekoppelten Entwicklerwerkzeugen fehl.