多屏幕源
窗口管理 API 引入了多屏原点的概念,它是宿主操作系统 (OS) 虚拟屏幕排列的 (0,0) 坐标,所有可用屏幕和窗口都围绕它定位。按照惯例,多屏原点是 OS 主屏幕的左上角,尽管规范规定它可以是虚拟屏幕排列中的任意一点。
主屏幕通常由用户通过操作系统设置指定,并且通常包含操作系统 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)。