JavaScript window.onload与body.onload

时间:2016-04-18 17:52:42

标签: javascript html css

我的问题与此处提出的问题相似但有点不同,window.onload vs <body onload=""/>

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

我的问题是以下之间的区别。假设body标签的ID为&#34; bodyTag&#34;。

document.getElementById("bodyTag").onload = function () {
    alert("hi");
} 

VS

window.onload = function () {
    alert("hi");
}

确切地说,这两者之间有什么区别?何时应该使用哪一种?这仅适用于纯JavaScript。我是否正确假设不同的是window.onload在整个网页加载之后才开始,所有样式都已加载,所有Javascript代码都已加载?使用第一个版本(document.getElementById(&#34; bodyTag&#34;)。onload =)时,它等待加载整个网页(如果它被声明为头部的外部CSS文件,则为CSS样式),但是不是所有的Javascript加载?这有区别吗?

2 个答案:

答案 0 :(得分:2)

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

(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())
})();

在这个例子中,我使用构造函数创建了Object,在这个例子中firstNamemiddleNamelastName被称为属性,而fullName()被称为methed,(你可以说该方法是对象中函数的另一个名称)。 所以考虑像这样的窗口

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"

}

但身体我的朋友是不同的情况,(更不用说文件和身体是两个不同的对象)。如果您为身体提供身份证并使用document.getElementByID('ID')。它将返回包含页面中显示的所有可见元素的对象。但它不会包含所有其他窗口内容,如cookie,会话存储。案例与文件相同。文档选择整个HTML代码,您只需编写更多内容。换句话说,它是包含<html></html>标签中包含的所有内容的对象。希望这清除混乱

----------------------- UPDATE ----------------------- ---------------------------- 好抱歉没有看到你的帖子正确。 window.onload将在整个页面与标题一起处理时加载(不要与head标记或HTML5 header标记混淆)。 document.onload只会在前端工作时加载(HTML,CSS和JS将完成加载)时间差异不大,除非你在标题中发送100KB +代码,我说要坚持使用window.onload,除非你的标题很大,或者你想做一些特定于页面显示的时间

答案 1 :(得分:-1)

加载网页窗口时将加载

窗口onload,只有在加载网页正文时才会加载body onload。

为了简单起见, 将加载第一个窗口,然后将加载网页的正文。所以首先加载Window.load,然后使用body onload。