demo · v145
Before / after Android
Chromestatus says 16% of all page loads read window.screenX. That's the size of the silent breakage that this fix unwinds — every one of those reads was wrong on Android. This page reports your current values and the legacy values they used to have.
checking…
Before Chrome 145 on Android (legacy)
window.screenX0
window.screenY0
window.outerWidth= innerWidth
window.outerHeight= innerHeight
Chrome 145+ (real values)
window.screenX—
window.screenY—
window.outerWidth—
window.outerHeight—
comparing…
what broke (and silently)
- multi-screen popups —
window.open(..., "left=…,top=…")placed atscreenX + offsetalways opened at0 + offset - floating tooltip libraries — anchored to
getBoundingClientRectthen translated byscreenXended up off-screen - screen-recording / drawing apps — captured
(screenX, screenY)as the canvas origin, recorded the wrong region - drag-out windows — saving the last window position to restore on next launch always restored to
(0,0) - analytics — "did the user position the window weirdly?" heuristics never fired
the code
// the read is the same — the fix is in Chrome
const realPosition = {
x: window.screenX,
y: window.screenY,
w: window.outerWidth,
h: window.outerHeight,
};
// on Chrome < 145 Android: { x: 0, y: 0,
// w: innerWidth, h: innerHeight }
// on Chrome 145+ Android: actual screen-space rect
see also
- Show true window position on Android — feature index
- Window Coordinates — live readout demo
- Popup placement math — sibling demo
- ChromeStatus entry