Window

Baseline 广泛可用 *

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

* 此特性的某些部分可能存在不同级别的支持。

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.cookieStore 只读 安全上下文

返回对当前文档上下文的 CookieStore 对象的引用。

Window.credentialless 只读 实验性

返回一个布尔值,指示当前文档是否加载在无凭据的 <iframe> 中。有关更多详细信息,请参阅无凭据 IFrame

Window.crossOriginIsolated 只读

返回一个布尔值,指示网站是否处于跨域隔离状态。

Window.crypto 只读

返回与全局对象关联的 Crypto 对象。

Window.customElements 只读

返回对 CustomElementRegistry 对象的引用,该对象可用于注册新的自定义元素并获取有关先前注册的自定义元素的信息。

Window.devicePixelRatio 只读

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

Window.document 只读

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

Window.documentPictureInPicture 只读 实验性 安全上下文

返回对当前文档上下文的文档画中画窗口的引用。

Window.fence 只读 实验性

返回当前文档上下文的 Fence 对象实例。仅适用于嵌入在 <fencedframe> 中的文档。

Window.frameElement 只读

返回窗口嵌入的元素,如果窗口未嵌入,则返回 null。

Window.frames 只读

返回当前窗口中子框架的数组。

Window.fullScreen 非标准

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

Window.history 只读

返回对 history 对象的引用。

Window.indexedDB 只读

为应用程序提供一种异步访问索引数据库功能的机制;返回一个 IDBFactory 对象。

Window.innerHeight 只读

获取浏览器窗口内容区域的高度,如果水平滚动条已渲染,则包括其高度。

Window.innerWidth 只读

获取浏览器窗口内容区域的宽度,如果垂直滚动条已渲染,则包括其宽度。

Window.isSecureContext 只读

返回一个布尔值,指示当前上下文是否安全(true)或不安全(false)。

Window.launchQueue 只读 实验性

当一个渐进式 Web 应用 (PWA) 以 launch_handlerclient_mode 值为 focus-existingnavigate-newnavigate-existing 启动时,launchQueue 提供了对 LaunchQueue 类的访问,从而可以为 PWA 实现自定义的启动导航处理。

Window.length 只读

返回窗口中框架的数量。另请参阅 window.frames

Window.localStorage 只读

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

Window.location

获取/设置窗口对象的位置或当前 URL。

Window.locationbar 只读

返回 locationbar 对象。

Window.menubar 只读

返回 menubar 对象。

Window.mozInnerScreenX 只读 非标准

返回窗口视口左上角的水平(X)坐标,单位为屏幕坐标。该值以 CSS 像素报告。如果需要,可参考 nsIDOMWindowUtils 中的 mozScreenPixelsPerCSSPixel 进行转换以适应屏幕像素。

Window.mozInnerScreenY 只读 非标准

返回窗口视口左上角的垂直(Y)坐标,单位为屏幕坐标。该值以 CSS 像素报告。如果需要,可参考 mozScreenPixelsPerCSSPixel 进行转换以适应屏幕像素。

Window.name

获取/设置窗口的名称。

Window.navigation 只读 实验性

返回当前 window 关联的 Navigation 对象。这是 Navigation API 的入口点。

Window.navigator 只读

返回对 navigator 对象的引用。

Window.opener

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

Window.origin 只读

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

Window.originAgentCluster 只读

如果此窗口属于一个以源为键的代理集群,则返回 true

Window.outerHeight 只读

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

Window.outerWidth 只读

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

Window.pageXOffset 只读

window.scrollX 的别名。

Window.pageYOffset 只读

window.scrollY 的别名。

Window.parent 只读

返回对当前窗口或子框架的父窗口的引用。

Window.performance 只读

返回一个 Performance 对象,其中包括 timingnavigation 属性,每个属性都是一个提供性能相关数据的对象。另请参阅使用导航计时以获取更多信息和示例。

Window.personalbar 只读

返回 personalbar 对象。

Window.scheduler 只读

返回与当前上下文关联的 Scheduler 对象。这是使用优先级任务调度 API 的入口点。

Window.screen 只读

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

Window.screenXWindow.screenLeft 只读

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

Window.screenYWindow.screenTop 只读

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

Window.scrollbars 只读

返回 scrollbars 对象。

Window.scrollMaxX 非标准 只读

窗口可水平滚动的最大偏移量,即文档宽度减去视口宽度。

Window.scrollMaxY 非标准 只读

窗口可垂直滚动的最大偏移量(即文档高度减去视口高度)。

Window.scrollX 只读

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

Window.scrollY 只读

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

Window.self 只读

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

Window.sessionStorage

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

Window.sharedStorage 只读 实验性 安全上下文

返回当前源的 WindowSharedStorage 对象。这是使用 Shared Storage API 向共享存储写入数据的主要入口点。

Window.speechSynthesis 只读

返回一个 SpeechSynthesis 对象,该对象是使用 Web Speech API 语音合成功能的入口点。

Window.statusbar 只读

返回 statusbar 对象。

Window.toolbar 只读

返回 toolbar 对象。

Window.top 只读

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

Window.trustedTypes 只读

返回与全局对象关联的 TrustedTypePolicyFactory 对象,提供使用 Trusted Types API 的入口点。

Window.viewport 实验性 只读

返回一个 Viewport 对象实例,该实例提供有关设备视口当前状态的信息。

Window.visualViewport 只读

返回一个 VisualViewport 对象,表示给定窗口的视觉视口。

Window.window 只读

返回对当前窗口的引用。

window[0]window[1]

返回对框架中 window 对象的引用。有关更多详细信息,请参阅 Window.frames

命名属性

文档中的某些元素也作为窗口属性暴露出来

  • 对于每个 <embed><form><iframe><img><object> 元素,如果其 name 非空,则会暴露出来。例如,如果文档包含 <form name="my_form">,那么 window["my_form"](及其等效的 window.my_form)会返回对该元素的引用。
  • 对于每个 HTML 元素,如果其 id 非空,则会暴露出来。

如果一个属性对应单个元素,则直接返回该元素。如果属性对应多个元素,则返回一个包含所有这些元素的 HTMLCollection。如果任何元素是可导航的 <iframe><object>,则返回第一个此类 iframe 的 contentWindow

已废弃的属性

Window.event 已废弃 只读

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

Window.external 已废弃 只读

返回一个包含用于向浏览器添加外部搜索提供程序功能的对象的对象。

Window.orientation 已废弃 只读

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

Window.status 已废弃

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

实例方法

此接口从 EventTarget 接口继承方法。

Window.atob()

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

Window.alert()

显示一个警告对话框。

Window.blur() 已废弃

使窗口失去焦点。

Window.btoa()

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

Window.cancelAnimationFrame()

使您能够取消先前使用 Window.requestAnimationFrame 调度的回调。

Window.cancelIdleCallback()

使您能够取消先前使用 Window.requestIdleCallback 调度的回调。

Window.clearInterval()

取消使用 Window.setInterval() 设置的重复执行。

Window.clearTimeout()

取消使用 Window.setTimeout() 设置的延迟执行。

Window.close()

关闭当前窗口。

Window.confirm()

显示一个带有消息的对话框,需要用户响应。

Window.createImageBitmap()

接受多种不同的图像源,并返回一个解析为 ImageBitmapPromise。可选地,源图像可以裁剪为起始于 (sx, sy)、宽度为 sw、高度为 sh 的像素矩形。

Window.dump() 非标准

向控制台写入一条消息。

Window.fetch()

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

Window.fetchLater() 实验性

创建一个延迟获取请求,该请求在页面导航离开时(被销毁或进入bfcache)或在提供的 activateAfter 超时后发送——以先到者为准。

Window.find() 非标准

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

Window.focus()

将焦点设置在当前窗口上。

Window.getComputedStyle()

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

Window.getDefaultComputedStyle() 非标准

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

Window.getScreenDetails() 实验性 安全上下文

返回一个 Promise,该 Promise 会兑现为一个 ScreenDetails 对象实例,表示用户设备上所有可用屏幕的详细信息。

Window.getSelection()

返回表示所选项目的选择对象。

Window.matchMedia()

返回一个表示指定媒体查询字符串的 MediaQueryList 对象。

Window.moveBy()

将当前窗口移动指定的量。

Window.moveTo()

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

Window.open()

打开一个新窗口。

Window.postMessage()

提供一种安全的方式,让一个窗口向另一个窗口发送数据字符串,这两个窗口不必在同一域内。

Window.print()

打开打印对话框以打印当前文档。

Window.prompt()

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

Window.queryLocalFonts() 实验性 安全上下文

返回一个 Promise,该 Promise 会兑现为一个表示本地可用字体的 FontData 对象数组。

Window.queueMicrotask()

将一个微任务排队,以便在控制权返回浏览器事件循环之前的安全时间执行。

Window.reportError()

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

Window.requestAnimationFrame()

告诉浏览器动画正在进行中,请求浏览器为下一个动画帧调度窗口的重绘。

Window.requestIdleCallback()

允许在浏览器空闲期间调度任务。

Window.resizeBy()

将当前窗口按一定量调整大小。

Window.resizeTo()

动态调整窗口大小。

Window.scroll()

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

Window.scrollBy()

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

Window.scrollByLines() 非标准

将文档按给定的行数滚动。

Window.scrollByPages() 非标准

将当前文档按指定的页数滚动。

Window.scrollTo()

滚动到文档中的一组特定坐标。

Window.setInterval()

调度一个函数,每当经过给定的毫秒数时执行一次。

Window.setTimeout()

调度一个函数在给定的时间量后执行。

Window.showDirectoryPicker() 实验性 安全上下文

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

Window.showOpenFilePicker() 实验性 安全上下文

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

Window.showSaveFilePicker() 实验性 安全上下文

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

Window.sizeToContent() 非标准

根据窗口内容调整窗口大小。

Window.stop()

此方法停止窗口加载。

Window.structuredClone()

使用结构化克隆算法创建给定值的深层克隆

已废弃的方法

Window.captureEvents() 已废弃

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

Window.clearImmediate() 非标准 已废弃

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

Window.releaseEvents() 已废弃

释放窗口对特定类型事件的捕获。

Window.requestFileSystem() 非标准 已废弃

让网站或应用获得对自己使用的沙箱文件系统的访问权限。

Window.setImmediate() 非标准 已废弃

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

Window.setResizable() 非标准 已废弃

不执行任何操作(无操作)。为与 Netscape 4.x 的向后兼容而保留。

Window.webkitConvertPointFromNodeToPage() 非标准 已废弃

将一个 WebKitPoint 从节点的坐标系统转换到页面的坐标系统。

Window.webkitConvertPointFromPageToNode() 非标准 已废弃

将一个 WebKitPoint 从页面的坐标系统转换到节点的坐标系统。

事件

使用 addEventListener() 或通过为此接口的 oneventname 属性分配事件监听器来监听这些事件。除了下面列出的事件外,许多事件可以从窗口对象中包含的 Document 中冒泡上来。

error

当资源加载失败或无法使用时触发。例如,如果脚本执行错误或图像找不到或无效。

languagechange

当用户的首选语言更改时,在全局范围对象上触发。

resize

当窗口大小被调整时触发。

storage

当存储区域(localStoragesessionStorage)在另一个文档的上下文中被修改时触发。

连接事件

offline

当浏览器失去网络访问权限且 navigator.onLine 的值切换为 false 时触发。

online

当浏览器获得网络访问权限且 navigator.onLine 的值切换为 true 时触发。

设备方向事件

devicemotion 安全上下文

以固定间隔触发,指示设备接收到的物理加速度和旋转速率(如果可用)。

deviceorientation 安全上下文

当磁力计方向传感器有关于设备当前方向与地球坐标系相比的新数据时触发。

deviceorientationabsolute 安全上下文

当磁力计方向传感器有关于设备当前绝对方向与地球坐标系相比的新数据时触发。

焦点事件

blur

当一个元素失去焦点时触发。

focus

当一个元素获得焦点时触发。

游戏手柄事件

gamepadconnected

当浏览器检测到游戏手柄已连接或首次使用游戏手柄的按钮/轴时触发。

gamepaddisconnected

当浏览器检测到游戏手柄已断开连接时触发。

历史记录事件

hashchange

当 URL 的片段标识符(以 # 符号开头并跟随的部分)发生变化时触发。

pagehide

当浏览器在切换到会话历史中的另一个文档时隐藏当前文档时发送。例如,当用户点击“后退”按钮或点击“前进”按钮在会话历史中移动时会发生这种情况。

pagereveal

当文档首次呈现时触发,无论是在从网络加载新文档时,还是在激活文档时(从往返缓存(bfcache)或预渲染)。

pageshow

当浏览器因导航任务而使文档可见时发送,不仅包括页面首次加载时,还包括用户在同一标签页内导航到其他页面后又导航回来的情况。

pageswap

当文档因导航即将卸载时触发。

popstate

当活动历史记录条目发生变化时触发。

加载和卸载事件

beforeunload

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

load

当整个页面加载完成时触发,包括所有依赖资源,如样式表和图像。

unload 已废弃

当文档或子资源被卸载时触发。

清单事件

appinstalled

当浏览器成功将页面安装为应用程序时触发。

beforeinstallprompt

当用户即将被提示安装 Web 应用程序时触发。

消息事件

message

当窗口接收到消息时触发,例如来自另一个浏览上下文对 Window.postMessage() 的调用。

messageerror

Window 对象接收到无法反序列化的消息时触发。

afterprint

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

beforeprint

在相关文档即将打印或预览打印时触发。

Promise 拒绝事件

rejectionhandled

每当一个 JavaScript Promise 被拒绝时发送,无论是否有处理程序来捕获该拒绝。

unhandledrejection

当一个 JavaScript Promise 被拒绝但没有处理程序来捕获该拒绝时发送。

滚动事件

scrollsnapchange 实验性

在滚动操作结束时,当选择了新的滚动捕捉目标时,在滚动容器上触发。

scrollsnapchanging 实验性

当浏览器确定一个新的滚动捕捉目标即将生效时,在滚动容器上触发,即它将在当前滚动手势结束时被选中。

已废弃的事件

orientationchange 已废弃

当设备的方向发生变化时触发。

vrdisplayactivate 已废弃 非标准

当显示器能够被呈现时触发。

vrdisplayconnect 已废弃 非标准

当兼容的 VR 设备连接到计算机时触发。

vrdisplaydisconnect 已废弃 非标准

当兼容的 VR 设备从计算机断开时触发。

vrdisplaydeactivate 已废弃 非标准

当显示器不再能被呈现时触发。

vrdisplaypresentchange 已废弃 非标准

当 VR 设备的呈现状态发生变化时触发——即从呈现变为不呈现,或反之亦然。

冒泡事件

并非所有冒泡的事件都能到达 Window 对象。只有以下事件可以,并且可以在 Window 对象上监听

接口

参见 DOM 参考

监听 Window 上的事件

HTML 元素有三种监听事件的方式

  • 使用 EventTarget.addEventListener 方法向元素添加事件监听器。
  • 在 JavaScript 中为元素的 oneventname 属性分配一个事件处理程序。
  • 在 HTML 中为元素添加一个以 on 为前缀的属性。

要监听 Window 对象的事件,通常只能使用前两种方法,因为 Window 没有对应的 HTML 元素。但是,有一组特定的事件,其监听器可以使用第二种或第三种方法添加到 Window 文档所属的 <body>(或已废弃的 <frameset>)元素上。这些事件是:

  • afterprint
  • beforeprint
  • beforeunload
  • blur
  • error
  • focus
  • hashchange
  • languagechange
  • load
  • message
  • messageerror
  • offline
  • online
  • pagehide
  • pagereveal
  • pageshow
  • pageswap
  • popstate
  • rejectionhandled
  • resize
  • scroll
  • storage
  • unhandledrejection
  • unload

这意味着以下内容是完全等价的:

js
window.onresize = (e) => console.log(e.currentTarget);
document.body.onresize = (e) => console.log(e.currentTarget);
html
<body onresize="console.log(event.currentTarget)"></body>

在所有三种情况下,你都会看到 Window 对象被记录为 currentTarget

规范

规范
HTML
# the-window-object

浏览器兼容性