$(window).load和$(document).ready之间有什么区别?

最近我一直在使用JavaScript代码问题,并从我的$(document).ready()取出一部分代码,并将它放在$(window).load()解决了这个问题。

现在我明白了window.load是在document.ready之后被触发的,但是为什么在document.ready之后没有准备好,那就是window.load()呢?

当所有资源完成加载(包括图像)时调用加载。 当DOM准备好交互时,准备就绪。

从MDC中, window.onload

加载事件在文档加载过程结束时触发。 此时,文档中的所有对象都在DOM中,并且所有图像和子帧都已完成加载。

从jQuery API文档.ready(处理程序)

虽然JavaScript在呈现页面时提供了用于执行代码的加载事件,但直到所有资源(如图像)都已完全接收之后,才会触发此事件。 在大多数情况下,脚本可以在DOM层次被完全构build后立即运行。 传递给.ready()的处理程序保证在DOM准备就绪后执行,所以这通常是附加所有其他事件处理程序并运行其他jQuery代码的最佳位置。 使用依赖CSS样式属性值的脚本时,在引用脚本之前引用外部样式表或embedded样式元素非常重要。

$(document).ready()意味着您的页面的DOM准备好被操纵。

当整个页面(包括像CSS和图像文件这样的组件)被完全加载时, window.load()被触发。

你想达到什么目的?

 $(document).ready(function(){ //code here }); 

上面的代码几乎每次使用jQuery时都会使用。

这个代码是在DOM准备好之后,当我们想要初始化我们的jQuery代码的时候使用的。

 $(window).load() 

有时候你想操纵图片。 例如,你想垂直和水平alignment一个图片,你需要得到的图片的宽度和高度,以此来做到这一点。 使用$(document).ready() ,如果访问者没有加载图像,那么你将无法做到这一点,在这种情况下,当图像加载完成时,你需要初始化jquery alignment函数。 这就是我们使用$(window).load()

$(document).ready是加载DOM时触发的jQuery事件,所以当文档结构准备就绪时会触发它。

$(window).load事件在整个内容(包括css,图像等)被加载后被触发。

这是主要的区别。

$(document).ready()<body>...</body>包装DOM

$(window).load()是文档的papa包装<html>...</html>所有DOM

让我们用你的情况来保存渲染处理。

加载状态是创build窗口对象时的状态,并且所有必要的组件(包括DOM)都已加载到内存中,但尚未传递到呈现引擎以在页面中呈现相同的内容。

另一方面,就绪状态确保DOM元素,事件和其他相关组件被传递到呈现引擎,呈现在页面上,并准备好进行交互和操作。

简单地说,当窗口的所有内容被加载时, window.load被调用,而当DOM被加载并且文档结构已经准备好时, document.ready被调用。

  1. $(document).ready是比较快速的$(window).load事件。

  2. $(document).ready在Dom加载时触发,而$(window).load事件在Dom,css和图像完全加载时触发。

 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script src="https://code.jquery.com/jquery-1.12.4.js" ></script> <script> $(window).load(function () { var img = $('#img1'); alert( "Image Height = " + img.height() + "<br>Image Width = " + img.width()); }); </script> </head> <body> <form id="form1" runat="server"> <div> <img id="img1" src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTozkxoNSH8739juRXJJX5JxREAB6I30bFyexPoCdRVa2fKfH2d" /> </div> </form> </body> </html>