DOMContentLoaded和window.onload

相信写js的,都知道window.onload吧,但是并不是每个人都知道DOMContentLoaded,其实即使你不知道,很有可能你也经常使用了这个东西。

一般情况下,DOMContentLoaded事件要在window.onload之前执行,当DOM树构建完成的时候就会执行DOMContentLoaded事件,而window.onload是在页面载入完成的时候,才执行,这其中包括图片等元素。大多数时候我们只是想在DOM树构建完成后,绑定事件到元素,我们并不需要图片元素,加上有时候加载外域图片的速度非常缓慢。

我们可以写代码来简单测试一下这两种事件:

javascript代码(引入了jQuery1.4.1):

if(document.addEventListener){

    function DOMContentLoaded(){

        $("#status").text("DOM
is ready now!"
);

    }

    document.addEventListener(
"DOMContentLoaded",
DOMContentLoaded,
false );

}

window.onload=function(){

            $("#status").text("DOM
is ready AND wondow.onload is excute!"
);

}

HTML 代码 body 部分:

<h1> DOM READY‘s TEST </h1>
<img src="./delay.php" alt="delay image" />
<p id="status"> DOM is not ready </p>

为了清楚的看到效果,特意写个简单的php文件,提供图片延时加载,代码如下:

sleep(5);
header(‘Location:./delay.png‘);

在firefox和chrome以及opera中都可以清楚的看到,在图片未载入之前,id为status的段落已经显示了“DOM is ready now!”,然后等5秒钟后,图片加载完成后,此段落显示”DOM is ready AND wondow.onload is excute!”

此代码并不能在IE中工作,一方面是因为我使用的是addEventListener,开始前做了个判断,不存在此方法则不添加此事件。这样做的原因是IE确实是不支持DOMContentLoaded这个事件的,为了代码的简单,就没为IE写了。虽然IE没有此事件,但是我们却可以来模拟这个事件,常见的方法是判断element的doScroll如果成功则说明DOM载入完成。

常见的库中都提供了此事件的兼容各个浏览器的封装,如果你是个jQuery使用者,你可能会经常使用$(document).ready();或者$(function(){}) 这都是使用了DOMContentLoaded事件

DOMContentLoaded和window.onload,布布扣,bubuko.com

时间: 2024-10-16 10:54:54

DOMContentLoaded和window.onload的相关文章

一次性分清DOMContentLoaded、window.onload、style

简单来说 当onload事件触发时,页面上所有的DOM,样式表,图片,js等都完全加载完成: 当DOMContentLoaded事件触发时,仅仅是DOM加载完成,但不包括样式表,图片等: 先触发DOMContentLoaded事件,后触发load事件: 看个栗子: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

window.onload、DOMContentLoaded和$(document).ready()

window.onload.DOMContentLoaded和$(document).ready() <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <scr

谈谈document.ready和window.onload的区别

在Jquery里面,我们可以看到两种写法:$(function(){}) 和$(document).ready(function(){}) 这两个方法的效果都是一样的,都是在dom文档树加载完之后执行一个函数(注意,这里面的文档树加载完不代表全部文件加载完). 而window.onload是在dom文档树加载完和所有文件加载完之后执行一个函数.也就是说$(document).ready要比window.onload先执行. 那么Jquery里面$(document).ready函数的内部是怎么实

jQuery Ready 与 Window onload 的区别(转)

“我们都知道,很多时候,在页面加载完后都需要做一些相应的初始化动作.例如,运行某些js特效,设置表单等等.怎么知道页面加载完了呢?一 般情况下都是设置body标签的onload监听window的load事件.但load事件是要在页面的元素全部加载完了才触发的,如果页面上图片较多 或图片太大,就会导致初始化的代码未被执行的时候用户就做了其它操作了. Jquery库提供了一个非常方便好用的函数( $(selector).ready()),让我们可以在页面的dom加载完后就可以做相应的操作(当然,这还

jQuery Ready 与 Window onload 的区别

在网上看到一篇文章与大家分享一下: “我们都知道,很多时候,在页面加载完后都需要做一些相应的初始化动作.例如,运行某些js特效,设置表单等等.怎么知道页面加载完了呢?一般情况下都是设置body标签的onload监听window的load事件.但load事件是要在页面的元素全部加载完了才触发的,如果页面上图片较多或图片太大,就会导致初始化的代码未被执行的时候用户就做了其它操作了. Jquery库提供了一个非常方便好用的函数( $(selector).ready()),让我们可以在页面的dom加载完

$(document).ready() 与window.onload的区别

Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的. 1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 2.编写个数不同 window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个 $(document).

window.onload及dom ready测试

测试代码段一: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <link rel="stylesheet" href="http://www.twitter.com/test.css"> <script>

$(document).ready和window.onload的区别 【转】

在Jquery里面,我们可以看到两种写法:$(function(){}) 和$(document).ready(function(){}) 这两个方法的效果都是一样的,都是在dom文档树加载完之后执行一个函数(注意,这里面的文档树加载完不代表全部文件加载完). 而window.onload是在dom文档树加载完和所有文件加载完之后执行一个函数.也就是说$(document).ready要比window.onload先执行. 那么Jquery里面$(document).ready函数的内部是怎么实

jQuery的window.onload和$(function(){})

1 <script src="js/jquery-1.11.3.js"></script> 2 <script> 3 //在onload事件中,所有页面内容(html,css,js,图片)加载后执行: 4 // 何时: 如果一个操作,必须等待css和图片加载后才能执行,应放在onload中 5 window.onload=function(){alert("整个页面加载完成");} 6 //在ready事件中显示DOM内容加载完成