Window
======

`window` 对象表示一个包含 DOM 文档的窗口，其 `document` 属性指向窗口中载入的 DOM 文档 。

使用 `document.defaultView` 属性可以获取指定文档所在窗口。

代表了脚本正在运行的窗口的 `window` 全局变量，被暴露给 Javascript 代码。

`Window` 接口是各种函数、命名空间、对象和构造函数的家，它们不一定与用户界面窗口的概念直接相关。然而，`Window` 接口是一个可以包含这些需要全局可用的项目的合适的地方。其中很多内容都在 JavaScript 参考和 DOM 参考中有所记载。

在标签式浏览器中，每个标签都由自己的 `Window` 对象表示；在特定标签中运行的 JavaScript 代码所看到的全局 `window` 总是代表代码所运行的标签。也就是说，即使在标签浏览器中，一些属性和方法仍然适用于包含标签的整个窗口，如 `resizeTo()` 和 `innerHeight`。一般来说，任何不能合理地与标签有关的东西都与窗口有关。

EventTarget

Window实例属性
----

*本接口从 `EventTarget` 接口继承属性。*

注意，对象类型的属性（例如：覆盖内建元素的原型）被列于下面单独的小节之中。

`Window.caches` 只读 

返回与当前环境相关的 `CacheStorage` 对象。这个对象可以实现一些功能，如存储供离线使用的资源，以及对请求生成自定义响应。

`Window.clientInformation` 只读 

`Window.navigator` 对象的别名。

`Window.closed` 只读 

此属性表示当前窗口是否关闭。

`Window.console` 只读 

返回对 console 对象的引用，该对象提供对浏览器调试控制台的访问。

`Window.credentialless` (en-US) 只读  
实验性

非标准

返回一个布尔值，表示当前文档是否在无凭据（credentialless）的 `<iframe>` 中加载。参见 IFrame credentialless (en-US) 以了解更多细节。

`Window.crypto` 只读 

返回浏览器的 crypto 对象。

`Window.customElements` 只读 

返回对 `CustomElementRegistry` 对象的引用，该对象可用于注册新的自定义元素并获取之前注册的自定义元素的信息。

`Window.devicePixelRatio` 只读 

返回当前显示器中物理像素和设备独立像素之间的比率。

`Window.document` 只读 

返回对 window 所包含的文档的引用。

`Window.frameElement` 只读 

返回窗口被嵌入的元素，如果窗口没有被嵌入，则返回空。

`Window.frames` 只读 

返回当前窗口中的子框架（subframe）形成的数组。

`Window.fullScreen` 
非标准

此属性指示窗口是否以全屏显示。

`Window.history` 只读 

返回对 history 对象的引用。

`Window.indexedDB` 只读 

为应用程序提供异步访问索引数据库的能力；返回一个 `IDBFactory` 对象。

`Window.innerHeight` 只读 

获取浏览器窗口的内容区域的高度，包括（已渲染的）水平滚动条。

`Window.innerWidth` 只读 

获取浏览器窗口的内容区域的宽度，包括（已渲染的）竖直滚动条。

`Window.isSecureContext` 只读 

返回一个布尔值，表示当前上下文安全（`true`）或不安全（`false`）。

`Window.launchQueue` (en-US) 只读  
实验性

当一个渐进式 web 应用（PWA）以 `focus-existing`、`navigate-new` 或 `navigate-existing` 的 `launch_handler` (en-US) `client_mode` 值启动时，`launchQueue` 提供对 `LaunchQueue` (en-US) 类的访问，这允许为 PWA 实现自定义的启动导航处理。

`Window.length` 只读 

返回窗口中的帧数。参见 `window.frames`。

`Window.location`

获取/设置 window 对象的位置，或当前的 URL。

`Window.locationbar` 只读 

返回 locationbar 对象。

`Window.localStorage` 只读 

返回一个对用于存储数据的本地存储对象的引用，该对象只能由创建它的源访问。

`Window.menubar` 只读 

返回 menubar 对象。

`Window.mozInnerScreenX` 只读  
非标准

返回窗口视口左上角的水平（X）坐标，以屏幕坐标表示。这个值是以 CSS 像素为单位报告的。请参阅 `nsIDOMWindowUtils` 中的 `mozScreenPixelsPerCSSPixel`，以获得转换系数，以便在需要时适应屏幕像素。

`Window.mozInnerScreenY` 只读  
非标准

返回窗口视口左上角的垂直（Y）坐标，以屏幕坐标表示。这个值是以 CSS 像素为单位报告的。请参阅 `mozScreenPixelsPerCSSPixel`，如果需要的话，可以用一个转换系数来适应屏幕像素。

`Window.name`

获取/设置 window 对象的名称。

`Window.navigation` (en-US) 只读  
实验性

返回当前 `window` 的相关 `Navigation` (en-US) 对象。是 `Navigation API` (en-US) 的入口点。

`Window.navigator` 只读 

返回对 navigator 对象的引用。

`Window.opener`

返回对打开当前窗口的 window 的引用。

`Window.origin` 只读 

返回全局对象的源，序列化为一个字符串。

`Window.outerHeight` 只读 

获取浏览器窗口外侧的高度。

`Window.outerWidth` 只读 

获取浏览器窗口外侧的宽度。

`Window.pageXOffset` 只读 

`window.scrollX` 的别名。

`Window.pageYOffset` 只读 

`window.scrollY` 的别名。

`Window.parent` 只读 

返回对当前窗口或子框架的被继承对象的引用。

`Window.performance` 只读 

返回一个 `Performance` 对象，其中包括 `timing` 和 `navigation` 属性，每个属性都是提供性能相关数据的对象。有关其他信息和例子，请参见使用导航计时。

`Window.personalbar` (en-US) 只读 

返回 personalbar 对象。

`Window.scheduler` (en-US) 只读 

返回与当前上下文相关的 `Scheduler` (en-US) 对象。这是使用优先级任务调度 API (en-US) 的入口。

`Window.screen` 只读 

返回与该窗口相关的 screen 对象的引用。

`Window.screenX` 和 `Window.screenLeft` 只读 

这两个属性都返回从用户浏览器视口的左边界到屏幕左侧的水平距离。

`Window.screenY` 和 `Window.screenTop` 只读 

这两个属性都会返回从用户浏览器视口的上边界到屏幕上侧的垂直距离。

`Window.scrollbars` 只读 

返回 scrollbars 对象。

`Window.scrollMaxX` 
非标准
 只读 

窗口在水平方向上可以滚动的最大偏移量，即文档宽度减去视口宽度。

`Window.scrollMaxY` 
非标准
 只读 

窗口在竖直方向上可以滚动的最大偏移量，即文档高度减去视口高度。

`Window.scrollX` 只读 

返回文档已经被水平滚动的像素数。

`Window.scrollY` 只读 

返回文档已经被竖直滚动的像素数。

`Window.self` 只读 

返回对 window 对象本身的引用。

`Window.sessionStorage`

返回对用于存储数据的会话存储对象的引用，这些数据只能由创建它的源访问。

`Window.speechSynthesis` (en-US) 只读 

返回 `SpeechSynthesis` 对象，这是使用 Web Speech API 语音合成功能的入门点。

`Window.statusbar` (en-US) 只读 

返回 statusbar 对象。

`Window.toolbar` (en-US) 只读 

返回 toolbar 对象。

`Window.top` 只读 

返回对窗口层次结构中最顶层窗口的引用。这个属性是只读的。

`Window.visualViewport` 只读 

返回 `VisualViewport` 对象，代表一个给定窗口的视觉视口。

`Window.window` 只读 

返回对当前 window 的引用。

`window[0]`、`window[1]` 等

以逐帧形式返回对 `window` 对象的引用，要了解更多细节，参见 `Window.frames`。

### 已废弃属性

`Window.event` 
已弃用
 只读 

返回**当前事件**，即当前由 JavaScript 代码的上下文处理的事件，如果当前没有事件被处理，则返回 `undefined`。应尽可能使用直接传递给事件处理程序的 `Event` 对象来代替。

`Window.external` 
已弃用
 只读 

返回一个带有向浏览器添加外部搜索提供者的功能的对象。

`Window.orientation` (en-US) 
已弃用
 只读 

返回视口相对于设备自然方向的度数（以 90 度为增量）。

`Window.sidebar` (en-US) 
已弃用

非标准
 只读 

返回对侧边栏的 window 对象的一个引用。

`Window.status` (en-US) 
已弃用

获取/设置浏览器底部状态栏中的文本。

实例方法
----

*本接口从 `EventTarget` 接口继承方法。*

`Window.addEventListener()`

为 window 上的特定事件类型注册一个事件处理器。

`Window.atob()`

解码一个使用 base-64 编码的数据字符串。

`Window.alert()`

显示一个警告对话框。

`Window.blur()`

将焦点从窗口上移开。

`Window.btoa()`

从一串二进制数据中创建一个 base-64 编码的 ASCII 字符串。

`Window.cancelAnimationFrame()`

取消之前使用 `Window.requestAnimationFrame` 安排的回调。

`Window.cancelIdleCallback()`

取消之前使用 `Window.requestIdleCallback` 安排的回调。

`Window.clearImmediate()`

取消使用 `setImmediate()` 设置的重复执行任务。

`Window.clearInterval()`

取消使用 `setInterval()` 设置的重复执行任务。

`Window.clearTimeout()`

取消使用 `setTimeout()` 设置的延时执行任务。

`Window.close()`

关闭当前窗口。

`Window.confirm()`

显示一个带有用户需要回应的信息对话框。

`Window.createImageBitmap()`

接受各种不同的图像源，并返回一个 `Promise`，经兑现可得到 `ImageBitmap`。可以选择将图片源裁剪成以 *(sx, sy)* 为起点的像素矩形，宽度为 sw，高度为 sh。

`Window.dispatchEvent()`

用于触发事件。

`Window.dump()` 
非标准

向控制台中写一条消息。

`Window.fetch()`

开始从网络获取资源的过程。

`Window.find()` 
非标准

在窗口中搜索给定的字符串。

`Window.focus()`

在当前窗口上设置焦点。

`Window.getComputedStyle()`

获取指定元素的计算样式。计算的样式表示该元素的所有 CSS 属性的计算值。

`Window.getDefaultComputedStyle()` 
非标准

获取指定元素的默认计算样式，忽略作者样式表。

`Window.getSelection()`

返回代表所选项目的 selection 对象。

`Window.matchMedia()`

返回代表指定媒体查询字符串的 `MediaQueryList` 对象。

`Window.moveBy()`

将当前窗口移动一个指定的偏量值。

`Window.moveTo()`

将窗口移动到指定的坐标。

`Window.open()`

打开一个新窗口。

`Window.postMessage()`

为一个窗口向另一个窗口发送一串数据提供了安全的手段，该窗口不需要与第一个窗口在同一域内。

`Window.print()`

打开“打印”对话框，打印当前文档。

`Window.prompt()`

返回用户在提示对话框中输入的文本。

`Window.queryLocalFonts()` 
实验性

返回 `Promise`，经兑现可得到包含一个代表本地可用字体的 `FontData` 对象数组。

`Window.removeEventListener()`

从 window 上移除一个事件监听器。

`Window.reportError()` (en-US)

报告一个脚本中的错误，模拟一个未处理的异常。

`Window.requestAnimationFrame()`

告诉浏览器一个动画正在进行中，要求浏览器为下一个动画帧安排窗口的重绘。

`Window.requestIdleCallback()`

启用浏览器空闲期间的任务调度。

`Window.resizeBy()`

按一定的变化量调整当前窗口的大小。

`Window.resizeTo()`

动态地调整窗口的大小。

`Window.scroll()`

将窗口滚动到文档中的一个特定位置。

`Window.scrollBy()`

将窗口中的文档按给定值滚动。

`Window.scrollByLines()` 
非标准

按给定的行数滚动文档。

`Window.scrollByPages()` 
非标准

按给定的页数滚动文档。

`Window.scrollTo()`

将文档滚动至特定坐标。

`Window.setImmediate()`

在浏览器完成其他繁重的任务后执行一个函数。

`Window.setInterval()`

安排一个函数，在给定的毫秒数过去后执行。

`Window.setResizable()` (en-US) 
非标准

切换用户调整窗口大小的能力。

`Window.setTimeout()`

安排函数在给定的时间内执行。

`Window.sizeToContent()` 
非标准

根据窗口的内容确定其大小。

`Window.showOpenFilePicker()` 
实验性

显示一个文件选择器，允许用户选择一个文件或多个文件。

`Window.showSaveFilePicker()` 
实验性

显示一个文件选择器，允许用户保存一个文件。

`Window.showDirectoryPicker()` 
实验性

显示一个目录选择器，允许用户选择一个目录。

`Window.stop()`

该方法停止了窗口的加载。

`Window.updateCommands()` 
非标准

更新当前 chrome 窗口（用户界面）的命令状态。

### 已废弃方法

`Window.back()` 
非标准

已弃用

在窗口历史中后退一步。该方法已被废弃，应该使用 `history.back()` 代替。

`Window.captureEvents()` (en-US) 
已弃用

注册窗口以捕获所有指定类型的事件。

`Window.forward()` (en-US) 
非标准

已弃用

在窗口历史中前进一步。该方法已被废弃，应该使用 `history.forward()` 代替。

`Window.releaseEvents()` (en-US) 
已弃用

解除窗口对特定类型事件的捕获。

`Window.showModalDialog()` 
非标准

已弃用

显示一个对话框。

事件
--

通过使用 `addEventListener()` 或给这个接口的 `oneventname` 属性指定一个事件监听器来监听这些事件。

`error`

当一个资源加载失败，或不能使用时触发该事件。例如，如果脚本有一个执行错误，或者图像找不到或无效。

`languagechange` (en-US)

当用户的首选语言发生变化时，在全局范围对象中触发该事件。

`devicemotion`

以固定的时间间隔触发该事件，显示设备所接受的物理加速力的大小和旋转速率（如果有）。

`deviceorientation`

当磁力计方向传感器提供了关于设备当前方向与地球坐标框架的新数据时，触发该事件。

`resize`

窗口大小发生变化时触发。

`storage`

当一个存储区域（`localStorage` 或 `sessionStorage`）在另一个文档的上下文中被修改时，触发该事件。

### 动画事件

`animationcancel` (en-US)

当一个动画意外地中止时，触发该事件。

`animationend` (en-US)

当一个动画正常完成时，触发该事件。

`animationiteration` (en-US)

当一个动画迭代完成时，触发该事件。

`animationstart` (en-US)

当一个动画开始时，触发该事件。

### 剪切板事件

`copy`

当用户通过浏览器的用户界面启动一个复制动作时，触发该事件。也可通过 `oncopy` 属性设置。

`cut`

当用户通过浏览器的用户界面启动一个剪切动作时，触发该事件。也可通过 `oncut` 属性设置。

`paste`

当用户通过浏览器的用户界面启动一个粘贴动作时，触发该事件。也可通过 `paste` 属性设置。

### 连接事件

`offline`

当浏览器失去了对网络的访问，并且 `navigator.onLine` 的值转换为 `false` 时，触发该事件。

`online`

当浏览器获得了对网络的访问，并且 `navigator.onLine` 的值转换为 `true` 时，触发该事件。

### 聚焦事件

`blur`

当一个元素失去焦点时，触发该事件。

`focus`

当一个元素获得焦点时，触发该事件。

### Gamepad 事件

`gamepadconnected`

当浏览器检测到游戏板已被连接或首次使用游戏板的按钮/轴时启动。

`gamepaddisconnected` (en-US)

当浏览器检测到游戏板被断开连接时启动。

### 历史记录事件

`hashchange`

当 URL 的片段标识符（URL 中以 `#` 符号开头及其后面的部分）发生变化时，触发该事件。

`pagehide`

当浏览器隐藏了当前的文档，而在切换到显示会话历史中的另一个文档时触发该事件。例如，当用户点击“后退”按钮或点击“前进”按钮在会话历史中移动时，就会发生这种情况。

`pageshow`

当浏览器因导航任务而使文件可见时触发该事件，不仅包括页面首次加载时，还包括用户在同一标签内导航到另一个页面后再返回该页面等情况。

`popstate`

当活动的历史条目改变时，触发该事件。

### 加载和卸载事件

`beforeunload`

当窗口、文档及其资源即将被卸载时，触发该事件。

`load`

当整个页面加载完毕时触发该事件，包括所有依赖资源，如样式表图片。

`unload`

当文档或子资源正在被卸载时触发，触发该事件。

### 清单事件

`appinstalled`

当浏览器成功地将一个页面安装为一个应用程序时，触发该事件。

`beforeinstallprompt`

当用户即将被提示安装一个 web 应用程序时，触发该事件。

### 消息事件

`message`

窗口收到消息时触发该事件，例如从另一个浏览上下文中调用 `Window.postMessage()`。

`messageerror`

当 `Window` 对象收到无法反序列化的消息时，触发该事件。

### 打印事件

`afterprint`

在相关文档开始打印或打印预览关闭后，触发该事件。

`beforeprint`

当相关文件即将被打印或预览打印时，触发该事件。

### Promise 拒绝事件

`rejectionhandled`

每当一个 JavaScript `Promise` 被拒绝时，不管是否有处理程序来捕捉拒绝，都会触发该事件。

`unhandledrejection`

当 JavaScript `Promise` 被拒绝，但没有处理程序来捕获拒绝时，触发该事件。

### 渐变事件

`transitioncancel` (en-US)

当 CSS 渐变被取消时，触发该事件。

`transitionend` (en-US)

当 CSS 渐变完成时，触发该事件。

`transitionrun` (en-US)

当 CSS 渐变首次创建时，触发该事件。

`transitionstart` (en-US)

当 CSS 渐变真正开始时，触发该事件。

### 已废弃事件

`orientationchange` 
已弃用

当设备的方向改变时，触发该事件。

`vrdisplayactivate` (en-US) 
已弃用

非标准

当显示器可供呈现时，触发该事件。

`vrdisplayconnect` (en-US) 
已弃用

非标准

当兼容的 VR 设备被连接到电脑上时，触发该事件。

`vrdisplaydisconnect` (en-US) 
已弃用

非标准

当兼容的 VR 设备从电脑上断开时，触发该事件。

`vrdisplaydeactivate` (en-US) 
已弃用

非标准

当显示器不再可供呈现时，触发该事件。

`vrdisplaypresentchange` (en-US) 
已弃用

非标准

当 VR 设备的呈现状态发生变化时触发该事件，即从呈现状态变成不呈现状态，或者反之亦然。

接口
--

参见 DOM 参考文档。

规范
--

| Specification |
| --- |
| HTML Standard # the-window-object |

浏览器兼容性
------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.