协慌网

登录 贡献 社区

window.onload vs $(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 事件。一旦 DOM 准备好就会调用 JQuery 的$(document).ready()方法(这意味着浏览器已经解析了 HTML 并构建了 DOM 树)。这使您可以在文档准备好被操作后立即运行代码。

例如,如果浏览器支持 DOMContentLoaded 事件(就像许多非 IE 浏览器那样),那么它将触发该事件。 (请注意,DOMContentLoaded 事件仅在 IE9 + 中添加到 IE 中。)

可以使用两种语法:

$( document ).ready(function() {
   console.log( "ready!" );
});

或速记版本:

$(function() {
   console.log( "ready!" );
});

$(document).ready()要点:

  • 它不会等待加载图像。
  • 用于在 DOM 完全加载时执行 JavaScript。把事件处理程序放在这里。
  • 可以多次使用。
  • 当您收到 “$ 未定义” 时,用jQuery替换$
  • 如果您想操纵图像,则不使用。请改用$(window).load()

window.onload()是一个原生的 JavaScript 函数。当页面上的所有内容都已加载时,会触发window.onload()事件,包括 DOM(文档对象模型),横幅广告和图像。两者之间的另一个区别是,虽然我们可以有多个$(document).ready()函数,但我们只能有一个onload函数。