Window
Baseline 广泛可用 *
Window 接口表示一个包含DOM文档的窗口,其 document 属性指向窗口中载入的DOM 文档。
可以使用 document.defaultView 属性来获取指定文档的窗口。
全局变量 window 表示脚本正在其中运行的窗口,它被暴露给 JavaScript 代码。
Window 接口是各种函数、命名空间、对象和构造函数的大本营,它们不一定与用户界面的窗口概念直接相关。然而,Window 接口是一个合适的地方,可以包含这些需要全局可用的项目。其中许多内容都记录在 JavaScript 参考和 DOM 参考中。
在标签页式浏览器中,每个标签页都由其自己的 Window 对象表示;在特定标签页内运行的 JavaScript 代码所看到的全局 window 始终代表代码正在运行的标签页。也就是说,即使在标签页式浏览器中,一些属性和方法仍然适用于包含该标签页的整个窗口,例如 resizeTo() 和 innerHeight。通常,任何不能合理地应用于标签页的事物都将应用于窗口。
实例属性
此接口从 EventTarget 接口继承属性。
注意,作为对象的属性(例如,用于覆盖内置元素的原型)在下面的单独部分中列出。
Window.caches只读 安全上下文-
返回与当前上下文关联的
CacheStorage对象。此对象启用了诸如为离线使用存储资产以及生成对请求的自定义响应等功能。 Window.clientInformation只读-
Window.navigator的别名。 Window.closed只读-
此属性指示当前窗口是否已关闭。
-
返回对当前文档上下文的
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_handler的client_mode值为focus-existing、navigate-new或navigate-existing启动时,launchQueue提供了对LaunchQueue类的访问,从而可以为 PWA 实现自定义的启动导航处理。 Window.length只读-
返回窗口中框架的数量。另请参阅
window.frames。 Window.localStorage只读-
返回对本地存储对象的引用,用于存储只能由创建它的源访问的数据。
Window.location-
获取/设置窗口对象的位置或当前 URL。
Window.locationbar只读-
返回 locationbar 对象。
-
返回 menubar 对象。
Window.mozInnerScreenX只读 非标准-
返回窗口视口左上角的水平(X)坐标,单位为屏幕坐标。该值以 CSS 像素报告。如果需要,可参考
nsIDOMWindowUtils中的mozScreenPixelsPerCSSPixel进行转换以适应屏幕像素。 Window.mozInnerScreenY只读 非标准-
返回窗口视口左上角的垂直(Y)坐标,单位为屏幕坐标。该值以 CSS 像素报告。如果需要,可参考
mozScreenPixelsPerCSSPixel进行转换以适应屏幕像素。 Window.name-
获取/设置窗口的名称。
-
返回当前
window关联的Navigation对象。这是 Navigation API 的入口点。 -
返回对 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对象,其中包括timing和navigation属性,每个属性都是一个提供性能相关数据的对象。另请参阅使用导航计时以获取更多信息和示例。 Window.personalbar只读-
返回 personalbar 对象。
Window.scheduler只读-
返回与当前上下文关联的
Scheduler对象。这是使用优先级任务调度 API 的入口点。 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-
返回对会话存储对象的引用,用于存储只能由创建它的源访问的数据。
-
返回当前源的
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()-
接受多种不同的图像源,并返回一个解析为
ImageBitmap的Promise。可选地,源图像可以裁剪为起始于 (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()实验性 安全上下文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-
当存储区域(
localStorage或sessionStorage)在另一个文档的上下文中被修改时触发。
连接事件
设备方向事件
devicemotion安全上下文-
以固定间隔触发,指示设备接收到的物理加速度和旋转速率(如果可用)。
deviceorientation安全上下文-
当磁力计方向传感器有关于设备当前方向与地球坐标系相比的新数据时触发。
deviceorientationabsolute安全上下文-
当磁力计方向传感器有关于设备当前绝对方向与地球坐标系相比的新数据时触发。
焦点事件
游戏手柄事件
gamepadconnected-
当浏览器检测到游戏手柄已连接或首次使用游戏手柄的按钮/轴时触发。
gamepaddisconnected-
当浏览器检测到游戏手柄已断开连接时触发。
历史记录事件
hashchange-
当 URL 的片段标识符(以
#符号开头并跟随的部分)发生变化时触发。 pagehide-
当浏览器在切换到会话历史中的另一个文档时隐藏当前文档时发送。例如,当用户点击“后退”按钮或点击“前进”按钮在会话历史中移动时会发生这种情况。
pagerevealpageshow-
当浏览器因导航任务而使文档可见时发送,不仅包括页面首次加载时,还包括用户在同一标签页内导航到其他页面后又导航回来的情况。
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 对象上监听
abortauxclickbeforeinputbeforematchbeforetogglecancelcanplaycanplaythroughchangeclickclosecontextlostcontextmenucontextrestoredcopycuechangecutdblclickdragdragenddragenterdragleavedragoverdragstartdropdurationchangeemptiedendedformdatainputinvalidkeydownkeypresskeyuploadeddataloadedmetadataloadstartmousedownmouseentermouseleavemousemovemouseoutmouseovermouseuppastepauseplayplayingprogressratechangeresetscrollendsecuritypolicyviolationseekedseekingselectslotchangestalledsubmitsuspendtimeupdatetogglevolumechangewaitingwheel
接口
参见 DOM 参考。
监听 Window 上的事件
HTML 元素有三种监听事件的方式
- 使用
EventTarget.addEventListener方法向元素添加事件监听器。 - 在 JavaScript 中为元素的
oneventname属性分配一个事件处理程序。 - 在 HTML 中为元素添加一个以
on为前缀的属性。
要监听 Window 对象的事件,通常只能使用前两种方法,因为 Window 没有对应的 HTML 元素。但是,有一组特定的事件,其监听器可以使用第二种或第三种方法添加到 Window 文档所属的 <body>(或已废弃的 <frameset>)元素上。这些事件是:
afterprintbeforeprintbeforeunloadblurerrorfocushashchangelanguagechangeloadmessagemessageerrorofflineonlinepagehidepagerevealpageshowpageswappopstaterejectionhandledresizescrollstorageunhandledrejectionunload
这意味着以下内容是完全等价的:
window.onresize = (e) => console.log(e.currentTarget);
document.body.onresize = (e) => console.log(e.currentTarget);
<body onresize="console.log(event.currentTarget)"></body>
在所有三种情况下,你都会看到 Window 对象被记录为 currentTarget。
规范
| 规范 |
|---|
| HTML # the-window-object |
浏览器兼容性
加载中…