Start · Sprachen · JavaScript · Referenz · Window.mozInnerScreenX

Window.mozInnerScreenX

Eigenschaft

Gibt die X-Koordinate der oberen linken Ecke des Ansichtsbereichs (Viewport) in Bildschirmkoordinaten zurück – nur lesbar und nur in Firefox.

seit JavaScript Nur Firefox (Gecko), nicht standardisiert Kategorie: webapi

Signatur

Window.mozInnerScreenX

Beschreibung

window.mozInnerScreenX ist eine nur lesbare, Firefox-spezifische Eigenschaft. Sie liefert die horizontale Position der oberen linken Ecke des Ansichtsbereichs (also des Bereichs, in dem das Dokument dargestellt wird) in Bildschirmkoordinaten. Die Angabe erfolgt in CSS-Pixeln.

Der Unterschied zu window.screenX: screenX bezieht sich auf die äußere Kante des Browserfensters inklusive Rahmen, Tab-Leiste und Symbolleisten. mozInnerScreenX berücksichtigt dagegen den Fensterrahmen und seitlich angedockte Elemente wie Seitenleisten. So lässt sich genau berechnen, wo ein Punkt im Dokument auf dem physischen Bildschirm liegt.

Einsatzgebiete sind vor allem Firefox-Erweiterungen, Kiosk- oder Testumgebungen und Werkzeuge, die Dokument-Koordinaten in Bildschirmkoordinaten umrechnen müssen, z. B. um native Popups oder Bildschirmaufnahmen exakt zu positionieren. Das Gegenstück für die vertikale Achse ist window.mozInnerScreenY.

Rückgabewert

Typ
number
Beschreibung
X-Koordinate der linken Kante des Ansichtsbereichs relativ zum Bildschirm, in CSS-Pixeln. Kann Nachkommastellen haben und auf Mehrmonitor-Systemen negativ sein. In anderen Browsern ist die Eigenschaft undefined.

Beispiele

Wert auslesen mit Feature-Erkennung

if ('mozInnerScreenX' in window) {
  console.log(`Viewport beginnt bei x = ${window.mozInnerScreenX}px`);
} else {
  console.log('mozInnerScreenX wird nicht unterstützt');
}
Viewport beginnt bei x = 8px (Firefox, Wert abhängig vom Fenster) mozInnerScreenX wird nicht unterstützt (Chrome, Safari)

Klickposition in Bildschirmkoordinaten umrechnen

document.addEventListener('click', (event) => {
  // Fallback: Abschätzung über screenX und Rahmenbreite
  const viewportX = window.mozInnerScreenX
    ?? window.screenX + (window.outerWidth - window.innerWidth) / 2;
  const screenPosX = viewportX + event.clientX;
  console.log(`Klick bei Bildschirm-x: ${Math.round(screenPosX)}`);
  // Zum Vergleich der vom Browser gelieferte Wert
  console.log(`event.screenX: ${event.screenX}`);
});
Klick bei Bildschirm-x: 412 event.screenX: 412

Unterschied zwischen screenX und mozInnerScreenX

const outer = window.screenX;
const inner = window.mozInnerScreenX;

if (typeof inner === 'number') {
  console.log(`Fensterkante: ${outer}px`);
  console.log(`Viewport-Kante: ${inner}px`);
  console.log(`Rahmen/Seitenleiste links: ${inner - outer}px`);
}
Fensterkante: 100px Viewport-Kante: 108px Rahmen/Seitenleiste links: 8px

// Wichtig · Fallstricke

  • Nicht standardisiert: Die Eigenschaft gibt es nur in Firefox (Gecko). Chrome, Edge und Safari kennen sie nicht, dort ist sie undefined. Vor der Nutzung immer mit 'mozInnerScreenX' in window prüfen oder einen Fallback einbauen.
  • Ist eine Seitenleiste links geöffnet, ist der Wert größer als die reine Rahmenbreite. Die Näherung (outerWidth - innerWidth) / 2 stimmt in dem Fall nicht.
  • Einheit sind CSS-Pixel, nicht Gerätepixel. Beim Zoomen oder mit HiDPI-Bildschirmen verändert sich der Wert. Für physische Pixel mit window.devicePixelRatio multiplizieren.
  • Auf Systemen mit mehreren Monitoren kann der Wert negativ sein, wenn ein Monitor links vom Hauptbildschirm liegt.
  • Datenschutz: Mit Fingerprinting-Schutz (privacy.resistFingerprinting) kann Firefox gerundete oder feste Werte liefern.
  • Die Eigenschaft ist nur lesbar. Zuweisungen werden ignoriert.