多屏幕原点
The Window Management API 引入了 **多屏幕原点** 的概念 - 这是主机操作系统 (OS) 虚拟屏幕排列的 (0,0) 坐标,所有可用的屏幕和窗口都围绕它进行定位。根据惯例,多屏幕原点是操作系统主屏幕的左上角,尽管规范规定它可以是虚拟屏幕排列中的任意点。
用户通常可以通过操作系统设置指定主屏幕,并且通常包含操作系统 UI 功能,例如任务栏/图标停靠栏。
注意:屏幕排列上的正坐标值向右和向下,而负坐标值向左和向上。
对现有 Web 平台功能的影响
多屏幕原点与以下 API 相关
- 每个可用屏幕的
ScreenDetailed.left
、ScreenDetailed.top
、ScreenDetailed.availLeft
和ScreenDetailed.availTop
的值相对于多屏幕原点报告。 - 每个窗口的
Window.screenLeft
、Window.screenTop
、Window.screenX
、Window.screenY
的值相对于多屏幕原点报告。 - 使用
Window.moveTo()
和Window.open()
时,窗口相对于多屏幕原点定位。
注意:并非所有浏览器都正式支持多屏幕原点,但有些浏览器有自己的非标准实现。建议您查看上述功能的浏览器兼容性信息,以了解每个浏览器中的行为。
可视化示例
假设我们有一个分辨率为 1920 x 1080 的外接显示器设置为主显示器,以及一个分辨率为 1440 x 900 的内置笔记本电脑显示器设置为辅助显示器。我们还假设操作系统 UI 在屏幕顶部占用 25px,并且仅在主屏幕上绘制。
如果辅助屏幕直接放置在主屏幕右侧,屏幕顶部边缘对齐
- 主屏幕的
left
/top
值将为 (0,0),而其availLeft
/availTop
值将为 (0,25) - 操作系统 UI 的厚度被添加。 - 辅助屏幕的
left
/top
值将为 (1920,0),而其availLeft
/availTop
值也将为 (1920,0) - 操作系统 UI 未在辅助屏幕上绘制。
但是,如果辅助屏幕直接放置在主屏幕左侧,屏幕顶部边缘对齐
- 主屏幕的
left
/top
值仍将为 (0,0),而其availLeft
/availTop
值将为 (0,25)。 - 辅助屏幕的
left
/top
值将为 (-1440,0),而其availLeft
/availTop
值也将为 (-1440,0)。