Window managementLimited availability
The window.getScreenDetails() method gets information about the screens on a device, which you can use to place new windows on a specific screen with window.open().
Not yet supported in all major browsers — check the table and provide a fallback.
Browser support
DesktopChrome
1–110Not supported
111+Supportedsince Mar 7, 2023
Current: 155Edge
12–110Not supported
111+Supportedsince Mar 13, 2023
Current: 154Firefox
✕Not supportedup to 157
Current: 157Safari
✕Not supportedup to 27
Current: 27MobileChrome Android
✕Not supportedup to 155
Current: 155Firefox Android
✕Not supportedup to 157
Current: 157Safari iOS
✕Not supportedup to 27
Current: 27How to use
Not supported in Firefox, Safari, Chrome Android, Firefox Android, Safari iOS. Use feature detection below and provide a fallback (or a polyfill) for those browsers.
Example
Full syntax and examples are on MDN: change event.
Feature detection
JS · check before using
if ("allow" in document.createElement("iframe")) {
// the allow attribute/property of <iframe> is supported
}Sub-features
Support for each part of the feature (27). The overall table above shows when the whole feature works.
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| Element.requestFullscreen.options_parameter.screen_option | 100 | 100 | ✕ | ✕ | ✕ | ✕ | ✕ |
| Permissions.permission_window-management | 111 | 111 | ✕ | ✕ | ✕ | ✕ | ✕ |
| Screen.change_event | 100 | 100 | ✕ | ✕ | 100 | ✕ | ✕ |
| Screen.isExtended | 100 | 100 | ✕ | ✕ | 100 | ✕ | ✕ |
| ScreenDetailed | 100 | 100 | ✕ | ✕ | ✕ | ✕ | ✕ |
| ScreenDetailed.availLeft | 100 | 100 | ✕ | ✕ | ✕ | ✕ | ✕ |
| ScreenDetailed.availTop | 100 | 100 | ✕ | ✕ | ✕ | ✕ | ✕ |
| ScreenDetailed.devicePixelRatio | 100 | 100 | ✕ | ✕ | ✕ | ✕ | ✕ |
| ScreenDetailed.isInternal | 100 | 100 | ✕ | ✕ | ✕ | ✕ | ✕ |
| ScreenDetailed.isPrimary | 100 | 100 | ✕ | ✕ | ✕ | ✕ | ✕ |
| ScreenDetailed.label | 100 | 100 | ✕ | ✕ | ✕ | ✕ | ✕ |
| ScreenDetailed.left | 100 | 100 | ✕ | ✕ | ✕ | ✕ | ✕ |
| ScreenDetailed.top | 100 | 100 | ✕ | ✕ | ✕ | ✕ | ✕ |
| ScreenDetails | 100 | 100 | ✕ | ✕ | ✕ | ✕ | ✕ |
| ScreenDetails.currentScreen | 100 | 100 | ✕ | ✕ | ✕ | ✕ | ✕ |
| ScreenDetails.currentscreenchange_event | 100 | 100 | ✕ | ✕ | ✕ | ✕ | ✕ |
| ScreenDetails.screens | 100 | 100 | ✕ | ✕ | ✕ | ✕ | ✕ |
| ScreenDetails.screenschange_event | 100 | 100 | ✕ | ✕ | ✕ | ✕ | ✕ |
| Window.getScreenDetails | 100 | 100 | ✕ | ✕ | 100 | ✕ | ✕ |
| Window.moveTo.relative-multi-screen | 100 | 100 | 1 | ✕ | 100 | 4 | ✕ |
Show 7 more
| Sub-feature | Chrome | Edge | Firefox | Safari | Chrome Android | Firefox Android | Safari iOS |
|---|---|---|---|---|---|---|---|
| Window.open.relative-multi-screen | 100 | 100 | 1 | ✕ | 100 | 4 | ✕ |
| Window.screenLeft.relative-multi-screen | 100 | 100 | 64 | ✕ | 100 | 64 | ✕ |
| Window.screenTop.relative-multi-screen | 100 | 100 | 64 | ✕ | 100 | 64 | ✕ |
| Window.screenX.relative-multi-screen | 100 | 100 | 1 | ✕ | 100 | 4 | ✕ |
| Window.screenY.relative-multi-screen | 100 | 100 | 64 | ✕ | 100 | 64 | ✕ |
| iframe.allow.window-management | 100 | 100 | ✕ | ✕ | 100 | ✕ | ✕ |
| http.headers.Permissions-Policy.window-management | 100 | 100 | ✕ | ✕ | 100 | ✕ | ✕ |