Signatur
Beschreibung
Die schreibgeschützte Eigenschaft window.mozInnerScreenY liefert den vertikalen Abstand der oberen linken Ecke des Viewports (also des Inhaltsbereichs ohne Tab-Leiste, Adressleiste und sonstige Browser-Oberfläche) vom oberen Bildschirmrand. Der Wert wird in CSS-Pixeln angegeben und kann Nachkommastellen haben.
Im Gegensatz dazu beschreibt window.screenY die Position des äußeren Browserfensters, also einschließlich Titelleiste und Symbolleisten. Die Differenz mozInnerScreenY - screenY entspricht damit ungefähr der Höhe der Browser-Oberfläche oberhalb des Seiteninhalts.
Nützlich ist die Eigenschaft vor allem, wenn Koordinaten aus dem Dokument (etwa aus getBoundingClientRect() oder MouseEvent.clientY) in absolute Bildschirmkoordinaten umgerechnet werden müssen – zum Beispiel, um ein Pop-up-Fenster exakt neben einem Element zu öffnen. Zusammen mit mozInnerScreenX bildet sie das Paar für die horizontale Position.
Da es sich um eine proprietäre Gecko-Erweiterung handelt, sollte man sie ausschließlich per Feature-Erkennung nutzen und für andere Browser eine Näherung (z. B. über MouseEvent.screenY - clientY) bereitstellen.
Rückgabewert
undefined.Beispiele
Viewport-Position auslesen (mit Feature-Erkennung)
if ('mozInnerScreenY' in window) {
console.log(`Viewport beginnt bei y = ${window.mozInnerScreenY}px`);
console.log(`Browser-Oberfläche oben: ${window.mozInnerScreenY - window.screenY}px`);
} else {
console.log('mozInnerScreenY wird nicht unterstützt');
}
Element-Position in Bildschirmkoordinaten umrechnen
const toScreenY = (el) => {
const rect = el.getBoundingClientRect();
return window.mozInnerScreenY + rect.top;
};
const button = document.querySelector('button');
console.log(`Button-Oberkante auf dem Bildschirm: ${toScreenY(button)}px`);
Browserübergreifende Näherung per Mausereignis
let viewportScreenY = window.mozInnerScreenY;
document.addEventListener('mousemove', (event) => {
// Fallback: Differenz aus Bildschirm- und Client-Koordinate
viewportScreenY = window.mozInnerScreenY ?? (event.screenY - event.clientY);
}, { once: true });
document.addEventListener('click', () => {
const popup = window.open('', 'info', `width=300,height=200,top=${Math.round(viewportScreenY ?? 0)}`);
popup?.document.write('<p>Hallo</p>');
});
// Wichtig · Fallstricke
- Nicht standardisiert: Nur Firefox (Gecko) unterstützt
mozInnerScreenY. Chrome, Edge und Safari liefernundefined– immer Feature-Erkennung verwenden. - Der Wert ist in CSS-Pixeln angegeben und hängt vom Zoomfaktor ab; bei Seiten-Zoom oder
devicePixelRatio≠ 1 entspricht er nicht den physischen Bildschirmpixeln. - Bei Mehrbildschirm-Setups kann der Wert negativ sein oder größer als
screen.height, je nach Anordnung der Monitore. - Unter Wayland oder in manchen Sandbox-/Datenschutzmodi (z. B.
privacy.resistFingerprinting) liefert Firefox möglicherweise gerundete oder fiktive Werte. - Die Eigenschaft ist schreibgeschützt; Zuweisungen werden ignoriert.
- Das Beispiel mit
document.writedient nur der Demonstration – für echte Inhalte sichere DOM-Methoden statt ungeprüftem HTML verwenden (XSS-Risiko).