我看到这些术语可以互换用作 DOM 的全局环境。有什么区别(如果有的话),我应该什么时候使用每一种?
JavaScript 中的窗口、屏幕和文档有什么区别?
Window是主要的 JavaScript 对象根,也就是global object浏览器中的根,也可以将其视为文档对象模型的根。您可以以window.
window.screen或者只是screen一个关于物理屏幕尺寸的小信息对象。
window.document或者只是document潜在可见(或更好的是:渲染)文档对象模型/DOM 的主要对象。
由于window是全局对象,因此您可以仅使用属性名称来引用它的任何属性——因此您不必写下来window.——它将由运行时计算出来。
好吧,窗口是加载到浏览器中的第一件事。此窗口对象具有大部分属性,如长度、内部宽度、内部高度、名称(如果已关闭)、其父项等。
那么文档对象呢?文档对象是您的 html、aspx、php 或将加载到浏览器中的其他文档。该文档实际上被加载到 window 对象中,并具有可用的属性,如标题、URL、cookie 等。这到底是什么意思?这意味着如果您想访问窗口的属性,则它是 window.property,如果它是文档,则它是 window.document.property,它也可以简称为 document.property。
这似乎很简单。但是一旦引入了 IFRAME 会发生什么?
简而言之,下面有更多详细信息,
window是该上下文的 JavaScript 的执行上下文和全局对象document包含通过解析 HTML 初始化的 DOMscreen描述物理显示器的全屏
有关这些对象的详细信息,请参阅W3C和Mozilla参考资料。三者之间最基本的关系是每个浏览器标签都有自己的window,并且window具有window.document和window.screen性能。浏览器选项卡的window是全球范围内,所以document并screen请参阅window.document和window.screen。下面是关于这三个对象的更多详细信息,遵循Flanagan 的 JavaScript:权威指南。
window
每个浏览器选项卡都有自己的顶级window对象。每个<iframe>(和已弃用的<frame>)元素也有自己的window对象,嵌套在父窗口中。这些窗口中的每一个都有自己单独的全局对象。window.window总是指window,但window.parent也window.top可能指封闭窗口,允许访问其他执行上下文。除了document和screen下面所描述的,window属性包括
setTimeout()并将setInterval()事件处理程序绑定到计时器location给出当前 URLhistory使用方法back()并forward()提供选项卡的可变历史记录navigator描述浏览器软件
document
每个window对象都有一个document要渲染的对象。这些对象之所以会混淆,部分原因是 HTML 元素在分配唯一 id 时被添加到全局对象中。例如,在 HTML 片段中
<body>
  <p id="holyCow"> This is the first paragraph.</p>
</body>
段落元素可以被以下任何一个引用:
window.holyCow或者window["holyCow"]document.getElementById("holyCow")document.querySelector("#holyCow")document.body.firstChilddocument.body.children[0]
screen
该window对象还有一个screen具有描述物理显示属性的对象:
屏幕属性
width和height全屏屏幕属性
availWidth并availHeight省略工具栏
显示渲染文档的屏幕部分是JavaScript 中的视口,这可能会令人困惑,因为在谈论与操作系统的交互时,我们将应用程序的屏幕部分称为窗口。的getBoundingClientRect()任何的方法,document元件将返回一个对象与top,left,bottom,和right描述在视口中的元件的位置的特性。
的window是实际的全局对象。
的screen是在屏幕上,它包含了用户的显示性能。
这document是 DOM 所在的位置。
该window包含一切,所以你可以打电话window.screen和window.document得到这些元素。看看这个小提琴,漂亮地打印每个对象的内容:http : //jsfiddle.net/JKirchartz/82rZu/
您还可以在Firebug /development 工具中查看对象的内容,如下所示:
console.dir(window);
console.dir(document);
console.dir(screen);
window是一切的根,screen只有屏幕尺寸,并且document是顶级 DOM 对象。所以你可以把它想象成window一个超级document...

