$(window).load()和$(document).ready()函数之间的区别

时间:2011-01-03 12:22:41

标签: jquery

jQuery中$(window).load(function() {})$(document).ready(function() {})之间有什么区别?

11 个答案:

答案 0 :(得分:233)

  • document.ready是一个jQuery事件,它在DOM准备就绪时运行,例如所有元素都可以找到/使用,但不一定都是内容
  • 图片等加载时,
  • window.onload会稍后(或同时处于最差/失败的情况下),因此,如果您使用的是图片尺寸,那么您经常会我想改用它。

答案 1 :(得分:64)

$(document).ready(function() {
 // executes when HTML-Document is loaded and DOM is ready
 alert("document is ready");
});


$(window).load(function() {
 // executes when complete page is fully loaded, including all frames, objects and images
 alert("window is loaded");
});

答案 2 :(得分:13)

区别在于:

$(document).ready(function() {是在加载DOM时触发的jQuery事件,因此在文档结构准备就绪时会触发它。

$(window).load()事件在加载完整个内容后被触发。

答案 3 :(得分:11)

$(window).load()在jQuery 3.0中不可用

$( window ).load(function() {
        // Handler for .load() called.
});

要解决此问题,可以将其用作“事件处理程序附件”

$( window ).on("load", function() {
        // Handler for .load() called.
});

答案 4 :(得分:8)

<html>
<head>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
    <script>
    $( document ).ready(function() {
        alert( "document loaded" );
    });

    $( window ).load(function() {
        alert( "window loaded" );
    });
    </script>
</head>
<body>
    <iframe src="http://stackoverflow.com"></iframe>
</body>
</html>

在加载所有iframe内容后将触发window.load

答案 5 :(得分:6)

$(document).ready在DOM中存在所有元素时发生,但不一定是所有内容。

$(document).ready(function() {
    alert("document is ready");
});
所有内容资源(图片等)加载后,

window.onload $(window).load()发生。

$(window).load(function() {
    alert("window is loaded");
});

答案 6 :(得分:2)

从jquery的角度来看 - 它只是将load / onload事件添加到窗口和文档中。 看看这个:

window.onload vs document.onload

答案 7 :(得分:0)

根据DOM Level 2 Events,load事件应该在文档上触发, 不在窗口。但是,在所有浏览器的窗口中都实现了加载 向后兼容性。

答案 8 :(得分:0)

document.ready(jQuery)   document.ready将在HTML文档加载属性后立即执行,并且DOM已准备就绪。

DOM:文档对象模型(DOM)是一种跨平台且与语言无关的约定,用于表示HTML,XHTML和XML文档中的对象并与之交互。

$(document).ready(function()
{
   // executes when HTML-Document is loaded and DOM is ready
   alert("(document).ready was called - document is ready!");
});

window.load(内置JavaScript)  然而,window.load将等待页面完全加载,这个    包括内框,图像等  * window.load是一个内置的JavaScript方法,众所周知在旧浏览器(IE6,IE8,旧的FF和Opera版本)中存在一些怪癖,但通常可以在所有这些浏览器中使用。

window.load可以像这样在body的onload事件中使用(但我强烈建议你不要在HTML中混合这样的代码,因为它后来会引起混淆):

$(window).load(function() 
{
   // executes when complete page is fully loaded, including all frames, objects and images
   alert("(window).load was called - window is loaded!");
});

答案 9 :(得分:0)

  

$(window).load 是一个事件,当DOM和页面上的所有内容(所有内容)像CSS,图像和框架一样完全加载时会触发。一个最好的例子是,如果我们想要获得实际图像大小或获取我们使用它的任何细节。

     

$(document).ready()表示一旦DOM加载并准备好由脚本操作,其中的代码就需要执行。它不会等待加载图像来执行jQuery脚本。

<script type = "text/javascript">
    //$(window).load was deprecated in 1.8, and removed in jquery 3.0
    // $(window).load(function() {
    //     alert("$(window).load fired");
    // });

    $(document).ready(function() {
        alert("$(document).ready fired");
    });
</script>
  

$(window).load在$(document).ready()之后触发。

     

$(window).load在1.8中已弃用,已在jquery 3.0中删除

答案 10 :(得分:-1)

我认为JQuery 3.x不支持$(window).load事件