window.onload vs $(document).ready()
JavaScript的window.onload
和jQuery的$(document).ready()
方法有什么区别?
ready
事件发生在HTML文档被加载后,而onload
事件发生在稍后,当所有内容(例如图像)也被加载时。
onload
事件是DOM中的标准事件,而ready
事件特定于jQuery。 ready
事件的目的是在文档加载后应尽早发生,以便为页面中的元素添加功能的代码不必等待所有内容加载。
window.onload
是内置的JavaScript事件,但由于它的实现在浏览器(Firefox,Internet Explorer 6,Internet Explorer 8和Opera)中存在微妙的怪癖,jQuery提供了document.ready
,它将这些事件抽象出来,并尽快触发因为页面的DOM准备就绪(不会等待图像等)。
$(document).ready
(注意它不是document.ready
,它是未定义的)是一个jQuery函数,封装并提供以下事件的一致性:
document.ondomcontentready
/ document.ondomcontentloaded
- 一个新的事件,当文档的DOM被加载时会触发(这可能是在图像等被加载之前的一段时间); 再次,在Internet Explorer和世界其他地方略有不同 window.onload
(即使在旧浏览器中也实现),当整个页面加载时(图像,样式等) $(document).ready()
是一个jQuery事件。 JQuery的$(document).ready()
方法一旦DOM准备好就会被调用(这意味着浏览器已经解析了HTML并构建了DOM树)。 这允许您在文档准备好被操作后立即运行代码。
例如,如果浏览器支持DOMContentLoaded事件(与许多非IE浏览器一样),那么它将触发该事件。 (请注意,DOMContentLoaded事件仅添加到IE9 +中的IE中。)
两种语法可以用于此:
$( document ).ready(function() {
console.log( "ready!" );
});
或简写版本:
$(function() {
console.log( "ready!" );
});
$(document).ready()
要点:
$
与jQuery
,当你收到“$没有定义”。 $(window).load()
来代替。 window.onload()
是一个本地JavaScript函数。 当页面上的所有内容都被加载时, window.onload()
事件触发,包括DOM(文档对象模型),横幅广告和图像。 两者之间的另一个区别是,虽然我们可以有多个$(document).ready()
函数,但我们只能有一个onload
函数。