首页 > 读书能让人学到什么

document.ready(document.ready和window.onload)

$(document).ready()的区别

$(document).ready(…)和 window.onload*虽然具有类似的效果,但是,它们在触发*作的时间上存在着微妙的差异。

window.onload

当一个文档完全下载到浏览器中时,会触发 window.onload*。这意味着页面上的全部元素对 j*ascript而言都是可以访问的,这种情况对编写功能性的代码非常有利,因为无需考虑加载的次序。

$(document).ready()

通过$(document).ready()注册的*处理程序,则会在 DOM完全就绪并可以使用时调用。虽然这也意味着所有元素对脚本而言都是可以访问的,但是,缺不意味着所有关联的文件都已经下载完毕。换句话说,当 HTML下载完成并解析为 DOM树之后,代码就可以运行。

jQuery*详解之$(document).ready()

在页面加载结束后,浏览器会通过js为dom元素添加*。原生的js中使用 window.onload方法;在JQ中使用$(document).ready()。这个方法在dom载入就绪时对其进行*纵并调用执行它所绑定的函数。

那么它和window.onload有何不同呢?

window.onload是在网页中所有元素加上所有资源++完全加++载到浏览器后才执行。

而$(document).ready()中绑定的*是在 dom完全就绪时就可以被调用,此时对于jQuery来说都是可以被访问的(关联的资源可能并没有被加载完毕)。

举个例子来说,在$(document).ready()中定义了图片的宽高,但由于此时图片还没有被加载完毕,此时的宽高不会生效。要解决这个问题可以使用jQuery中的 load()方法。

load()方法会在元素的onload*中绑定一个处理函数,如果该处理函数绑定给window对象,则会在所有资源加载完毕后触发,如果load绑定在元素上则会在该元素加载完毕后触发。

既然window.onload比较完备为什么还要用jQuery中的$(document).ready()呢?

window.onload*每次只能保存对一个函数的引用,他会覆盖掉之前的函数,所以不能再现有行为上添加新的行为。如果引用了多个js文件,每个都需要window.onload方法就导致编码复杂。

使用$(document).ready()方法能够很好地解决这种问题,每次调用$document.ready()方法都会在现有行为上追加新的行为,这些行为会根据注册顺序依次执行。

document.ready*和document.load*的区别

1、概念

document.ready:

是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件);

document.load:

是onload,指示页面包含图片等文件在内的所有元素都加载完成。

2、作用

document.ready:

在DOM加载完成后就可以可以对DOM进行*作。

一般情况一个页面响应加载的顺序是,域名解析-加载html-加载js和css-加载图片等其他信息。

那么Dom Ready应该在“加载js和css”和“加载图片等其他信息”之间,就可以*作Dom了。

document.load:

在document文档加载完成后就可以可以对DOM进行*作,document文档包括了加载图片等其他信息。

那么Dom Load就是在页面响应加载的顺序中的“加载图片等其他信息”之后,就可以*作Dom了。

3、加载顺序

document.ready:

文档加载的顺序:域名解析–>加载HTML–>加载J*aScript和CSS–>加载图片等非文字媒体文件。

只要<img>标签加载完成,不用等该图片加载完成,就可以设置图片的属性或样式等。

在原生J*aScript中没有Dom ready的直接方法。

document.load:

文档加载的顺序:域名解析–>加载HTML–>加载J*aScript和CSS–>加载图片等非文字媒体文件。

DOM load在加载图片等非文字媒体文件之后,表示在document文档加载完成后才可以对DOM进行*作,document文档包括了加载图片等非文字媒体文件。

例如,需要等该图片加载完成,才可以设置图片的属性或样式等。

在原生J*aScript中使用onload*。

扩展资料

$(document).ready()和传统的方法<body onload=”load()”>相似,不同的是onload()的方法是在页面加载完成后才发生,这包括DOM元素和其他页面元素(例如图片)的加载。

而$(document).ready()所要执行的代码是在DOM元素被加载完成的情况下执行,所以,使用document.ready()方法的执行速度比onload()的方法要快。

J*ascript只有在DOM元素已经定义以后才可以对其执行某种*作,jQuery使用document.ready来保证所要执行的代码是在DOM元素被加载完成的情况下执行。

document.ready和onload的区别

document.ready和onload的区别为:加载程度不同、执行次数不同、执行速度不同。

一、加载程度不同

1.document.ready:在DOM加载完成后就可以可以对DOM进行*作。一般情况一个页面响应加载的顺序是,域名解析-加载html-加载js和css-加载图片等其他信息。那么DomReady应该在“加载js和css”和“加载图片等其他信息”之间,就可以*作Dom了。

2.onload:在document文档加载完成后就可以可以对DOM进行*作,document文档包括了加载图片等其他信息。那么Dom Load就是在页面响应加载的顺序中的“加载图片等其他信息”之后,就可以*作Dom了。

二、执行次数不同

1.document.ready:document.ready可以写多个.ready,可以执行多次,第N次都不会被上一次覆盖。

2.onload:onload只能执行一次,如果有多个,那么第一次的执行会被覆盖。

三、执行速度不同

1.document.ready:onload除了要等待DOM被创建还要等到包括大型图片、音频、视频在内的所有外部资源都完全加载。如果加载图片和媒体内容花费了大量时间,用户就会感受到定义在onload*上的代码在执行时有明显的延迟。

2.onload:document.ready函数只需对 DOM树的等待,而无需对图像或外部资源加载的等待,从而执行起来更快。

JS 页面加载触发* document.ready和onload的区别

在Jquery里面,我们可以看到两种写法:$(function(){})

和$(document).ready(function(){})

这两个方法的效果都是一样的,都是在dom文档树加载完之后执行一个函数(注意,这里面的文档树加载完不代表全部文件加载完)。

而window.onload是在dom文档树加载完和所有文件加载完之后执行一个函数。也就是说$(document).ready要比window.onload先执行。

那么Jquery里面$(document).ready函数的内部是怎么实现的呢?下面我们就来看看:

我们来为document添加一个ready函数:

document.ready

=

function

(callback)

{

///兼容FF,Google

if

(document.addEventListener)

{

document.addEventListener('DOMContentLoaded',

function

()

{

document.removeEventListener('DOMContentLoaded',

arguments.callee,

false);

callback();

},

false)

}

//兼容IE

else

if

(document.attachEvent)

{

document.attachEvent('onreadytstatechange',

function

()

{

if

(document.readyState

==

“complete”)

{

document.detachEvent(“onreadystatechange”,

arguments.callee);

callback();

}

})

}

else

if

(document.lastChild

==

document.body)

{

callback();

}

}

document.ready这个函数是实现了。我们再来验证一下最上面所说的“ready要比onload先执行”:

window.onload

=

function

()

{

alert('onload');

};

document.ready(function

()

{

alert('ready');

});

执行这段代码之后,你会看到浏览器里面会先弹出“ready”,在弹出onload。

这个大家还是亲手试试吧!

=============================

以上来信息源于百度搜索。。。总的来说ready比onload要先触发

本文链接:http://www.kkyx8.com/html/87961252.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。