Javascript中的窗口,屏幕和文档有什么区别?
Window
是主要的JavaScript对象根,也就是浏览器中的全局对象,也可以看作是文档对象模型的根。您可以在大多数情况下(在浏览器中)以window
的身份访问它;
window.screen
是关于物理屏幕尺寸的小型信息对象。
window.document
或只是document
是可见(或更好的:已渲染)文档对象模型/ DOM的主要对象。
window
是实际的全局对象。
screen
是屏幕,它包含有关用户显示的属性。
document
是DOM所在的位置。
'document'也可以是'window.document','screen'可以'window.screen'和'window'可以'window.window'(或'window.window.window'):-P – 2012-03-27 18:19:43
我查过了并且window.window.window.window也可以使用; P – 2012-03-27 18:24:02
@PeterAronZentai:这是因为'window'是一个全局变量,它使它成为全局'window'对象的一个属性。 :-) – 2012-03-27 19:02:42
window
包含了所有内容,因此您可以拨打window.screen
和window.document
来获取这些元素。看看这个小提琴,漂亮,打印每个对象的内容:http://jsfiddle.net/JKirchartz/82rZu/
您还可以看到该对象的萤火/开发工具的内容是这样的:
console.dir(window);
console.dir(document);
console.dir(screen);
window
是一切的根本, screen
只是屏幕尺寸,而document
是*DOM对象。所以你可以把它看成是window
像一个超级document
...
窗口是被加载到浏览器的第一件事。此窗口对象具有大部分属性,如长度,innerWidth,innerHeight,名称(如果已关闭),其父项等。
文档对象是您的html,aspx,php或其他将被加载到浏览器中的文档。该文件实际上被加载到窗口对象中,并具有可用的属性,如标题,URL,cookie等。这是什么意思?这意味着如果你想访问window.property的窗口属性,如果它是文档,它是window.document.property,它也可以简称为document.property。
好了,窗口是被加载到浏览器的第一件事。此窗口对象具有大部分属性,如长度,innerWidth,innerHeight,名称(如果已关闭),其父项等。
那么文档对象呢?文档对象是您的html,aspx,php或其他将被加载到浏览器中的文档。该文件实际上被加载到窗口对象中,并具有可用的属性,如标题,URL,cookie等。这是什么意思?这意味着如果你想访问window.property的窗口属性,如果它是文档,它是window.document。属性也可以简称为document.property。
这似乎很简单。但是一旦引入IFRAME会发生什么?
误导某人试图学习基础知识:“文档对象是您的html,aspx,php或其他将被加载到浏览器中的文档。”浏览器渲染HTML和CSS并执行JavaScript。浏览器看不到像PHP这样的服务器端语言的文件。 – 2017-01-29 20:47:51
简单地说,下面更详细,
-
window
是这方面的JS - 执行上下文和全局对象
document
包含HTML -
screen
描述物理显示器的全屏
请参阅有关这些对象的详细信息W3C和Mozilla引用。三者之间最基本的关系是每个浏览器选项卡都有自己的window
,并且window
具有window.document
和window.screen
属性。浏览器选项卡的window
是全局上下文,因此document
和screen
指的是window.document
和window.screen
。有关这三个对象的更多细节如下,后面Flanagan's JavaScript: Definitive Guide。
window
每个浏览器标签都有自己的*window
对象。每个(和不建议使用的<frame>
)元素也都有自己的window
对象,嵌套在父窗口中。每个窗口都有自己独立的全局对象。 window.window
总是指window
,但window.parent
和window.top
可能指的是封闭窗口,允许访问其他执行上下文。除了下面描述document
和screen
,window
属性包括
-
setTimeout()
和setInterval()
结合事件处理程序定时器 -
location
给出当前URL -
history
与方法back()
和forward()
给标签的可变历史 -
navigator
描述浏览器软件
document
每个window
对象必须被渲染的对象document
。这些对象会部分混淆,因为分配了唯一标识时,HTML元素会添加到全局对象中。例如。在HTML代码段
<body>
<p id="holyCow"> This is the first paragraph.</p>
</body>
段落元件可以通过下列任一被引用:
-
window.holyCow
或window["holyCow"]
document.getElementById("holyCow")
document.body.firstChild
document.body.children[0]
screen
的window
对象也具有与描述的物理显示特性的screen
对象:
屏幕属性
width
和height
是全屏屏幕属性
availWidth
和availHeight
省略工具栏
显示渲染文档的屏幕部分是JavaScript中的视口,这可能会让人感到困惑,因为我们在讨论与操作系统的交互时称为屏幕的应用程序部分。任何document
元素的getBoundingClientRect()
方法将返回一个包含top
,left
,bottom
和right
属性的对象,该属性描述元素在视口中的位置。
有一个使用文档对象''window.onload'的等价指令。 – FilipeCanatto 2018-01-04 01:42:17
@FilipeCanatto看到https://*.com/questions/588040/window-onload-vs-document-onload – 2018-01-12 06:02:35
文档可以大于窗口 - 窗口是浏览器中的“可见”部分。 – Mandy 2014-06-05 06:45:23
@Mandy一个html元素,如果它不是文档的一部分是不可见的。您可以创建内联框,只有当您将iframe附加到文档时,其窗才完全不可见 – 2015-03-27 22:20:15
无论您访问的是哪个网页,窗口对象是否都相同?该文档是一个JavaScript对象,其中包含有关该网页的信息? – Costa 2016-07-14 21:17:15