首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript window.onload与body.onload

JavaScript window.onload与body.onload
EN

Stack Overflow用户
提问于 2016-04-19 01:52:42
回答 2查看 2.4K关注 0票数 5

我的问题类似,但与这里问的略有不同,window.onload vs

在这个问题中,它是使用window.onload和内联js的比较。

我的问题是以下两者之间的区别。假设body标记的Id为"bodyTag“。

代码语言:javascript
复制
document.getElementById("bodyTag").onload = function () {
    alert("hi");
} 

vs

代码语言:javascript
复制
window.onload = function () {
    alert("hi");
}

确切地说,这两者之间有什么区别,我应该在什么时候使用一个与另一个?这只适用于纯JavaScript。我假设window.onload只有在整个网页加载完毕,所有样式都加载完毕,所有Javascript代码都加载完毕后才会启动,这样的假设对吗?而对于第一个版本(document.getElementById("bodyTag").onload=),它会等待整个网页加载(如果在head中声明为外部CSS文件,还会等待CSS样式),而不是等待所有Javascript加载?这就是区别吗?

EN

回答 2

Stack Overflow用户

发布于 2016-04-19 13:42:17

Window (对象)有时被称为全局空间容器,它包含所有其他对象(默认和自定义对象),它包含所有内容,如indexedDB、会话存储、cookies、变量、函数和浏览器页面内的所有内容。基本上,正如我在上面写的那样,window是一个对象,它将所有内容存储为方法或属性。让我解释一下什么是属性,什么是方法,

代码语言:javascript
复制
(function my_obj(){
this.firstName="john";
var middleName = "XYZ"
this.lastName="doe";
this.fullName = function(){
return this.firstName+" "+this.middleName+" "+this.lastName
}
document.write(this.fullName())
})();

在本例中,我使用构造函数创建了对象,在本例中,firstNamemiddleNamelastName被称为属性,方法被称为fullName() (您可以说该方法是对象中函数的另一个名称)。因此,请考虑如下窗口

代码语言:javascript
复制
window{
preset_obj:{};
indexedDB:{......};
.
.
.
.
.
.
.
.
.
.
.
//your code loads in the end
var my_var= "JS rocks!"
var anti_me= "Are You out of your Mind?? JS??Huh!"
var dont_care= "I Love COBOL"

}

但是body我的朋友是不同的情况,(更不用说文档和body是两个不同的对象)。如果您给body一个ID并使用document.getElementByID('ID')。它将返回包含页面中显示的所有可见元素的对象。但它不会包含所有其他窗口内容,如cookies、会话存储。文档的情况也是如此。文档选择您编写的整个HTML代码,不多也不少。换句话说,它是一个对象,它包含了<html></html>标记中包含所有内容。希望这篇文章能消除困惑

对不起,没有正确阅读您的帖子。当整个页面完成处理时,window.onload将连同标头一起加载(不要与head标记或HTML5 header标记混淆)。document.onload将只在前端工作时加载(HTML,CSS和JS将完成加载)时间差并不大,除非您在标题中发送100KB+代码,否则我建议您坚持使用window.onload,除非您的标题很大,或者您想做一些特定于页面显示的特定时间

票数 2
EN

Stack Overflow用户

发布于 2016-04-19 13:48:51

window onload将在加载网页的window时加载,而as body onload仅在加载网页的正文时加载。

为了简单起见,首先加载窗口,然后加载网页正文。因此,将首先加载Window.load,然后body onload将工作。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36701008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档