`

window.onload 和 DOMContentLoaded

 
阅读更多

相信写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事件

分享到:
评论

相关推荐

    让浏览器DOM元素最后加载的js方法

    正确的使用window.onload和DOMContentLoaded,可以有效地处理页面加载的顺序问题,提升用户体验。在实际开发中,建议开发者根据具体需求和浏览器兼容性,选择合适的方法来实现DOM元素的最后加载处理。

    微软JavaScript手册(电子书)

    7. **定时器与回调**:setTimeout和setInterval函数的使用,以及IE中的window.onload和DOMContentLoaded事件的差异。 8. **异步编程**:Promise、async/await的理解和使用,以及在IE中如何实现类似的异步处理。 9....

    js之onload事件的一点使用心得

    DOMContentLoaded事件比window.onload更早触发,因为它是当初始HTML文档被完全加载和解析后不需要等待样式表、图片和子框架的加载时就触发。这对于提升页面的交互响应速度和用户体验非常有帮助。 综上所述,...

    IFrame AND window对象

    2. **页面操作**:`window.onload`和`window.DOMContentLoaded`事件分别在页面完全加载和DOM结构加载完成后触发,用于执行脚本。 3. **窗口大小和位置**:`window.innerWidth`和`window.innerHeight`返回窗口的内部...

    js 某个页面监听事件渲染完毕的时间.pdf

    JavaScript页面渲染完毕时间的监听是前端开发者不可或缺...通过合理选择和使用`window.onload`、`$(document).ready`或`DOMContentLoaded`事件,我们可以确保在正确的时间执行必要的操作,从而提升网页的性能和交互性。

    Jquery 在页面加载后执行的几种方式

    需要注意的是,jQuery的`$(document).ready()`方法可以多次使用,而且它和原生的`window.onload`并不冲突。如果两者都使用,则`window.onload`会在`$(document).ready()`之后执行。`window.onload`通常用于在页面...

    js onload处理html页面加载之后的事件

    此外,window.onload与DOMContentLoaded事件也是有区别的。window.onload关注的是整个页面完全加载完毕,包括样式表、图片、脚本等资源。而DOMContentLoaded事件则只需要DOM结构加载完毕后就会触发,这个时间点通常...

    页面中body onload 和 [removed] 冲突的问题的解决

    这时,`body.onload` 和 `window.onload` 事件就显得尤为重要。然而,当这两个事件同时存在时,可能会出现冲突,导致代码执行顺序混乱或只执行其中一个事件。本文将详细探讨这个问题,并提供解决方案。 `body....

    javascript页面加载完执行事件代码

    2. 优先考虑使用window.onload或document.addEventListener('DOMContentLoaded', function() {...})方法,而不是document.onreadystatechange,除非需要根据页面加载状态的细微变化进行处理。 3. 如果页面中有多个...

    js 某个页面监听事件渲染完毕的时间.docx

    `window.onload`和`DOMContentLoaded`是两个关键的事件,用于监听页面加载的不同阶段。它们各自有其应用场景和优势。 首先,`window.onload`事件是在整个页面(包括HTML、CSS、JavaScript、图片和其他外部资源)...

    [removed] 加载完毕的问题及解决方案(上)

    在讨论页面加载完毕的问题及其解决方案时,首先需要明确两个概念:window.onload和DOMContentLoaded事件。window.onload事件会在页面上所有的内容(包括DOM、图片、样式表等)完全加载完毕后触发,而...

    js获取浏览器宽和高http://www.tiki-toki.com/

    通常,我们希望在页面完全加载后再获取浏览器尺寸,因此可以将这些操作放在`window.onload`或`DOMContentLoaded`事件中。`window.onload`在所有资源(如图片)加载完毕后触发,而`DOMContentLoaded`在HTML结构加载...

    在DOM加载完成时运行的代码,可以这样写:

    总结来说,确保代码在DOM加载完成后再执行是网页开发中的基础实践,可以利用jQuery的`$(document).ready()`或者原生JavaScript的`DOMContentLoaded`和`window.onload`事件来实现这一目标。正确使用这些方法可以优化...

    [removed]的页面加载技巧

    除了`window.onload`之外,还有其他处理页面加载的方法,例如使用`DOMContentLoaded`事件。`DOMContentLoaded`事件会在HTML文档解析完成且DOM树构建完毕时触发,而无需等待所有资源(如图片)加载。如果你只需要在...

    [removed]使用指南

    此外,随着现代JavaScript的发展,另一种常用的替代 `window.onload` 的方法是使用 `DOMContentLoaded` 事件,它会在DOM树加载完成,而不等待图片和其他外部资源时触发。如果你只需要操作DOM而不关心其他资源,`...

    Web前端开发技术-window对象.pptx

    掌握这些基础的`window`对象事件和JavaScript执行机制,能够帮助开发者更好地理解和解决前端开发中遇到的问题,提高代码的可读性和性能。在实际项目中,合理利用异步处理和事件监听,能有效提升用户体验和程序的响应...

    javascript经典特效---窗口打开后的移动.rar

    这可以结合`window.onload`事件或`DOMContentLoaded`事件来完成。例如: ```javascript window.onload = function() { // 窗口初始位置 var x = 0, y = 0; // 每隔一段时间(如100毫秒)移动窗口 setInterval...

    jQuery中的read和JavaScript中的onload函数的区别

    总结来说,JavaScript的window.onload和jQuery的$(document).ready()在处理页面加载完毕时的事件触发时机上有所不同。开发者在选择使用哪一个方法时需要根据实际情况和性能需求做出决定。对于需要页面完全加载后再...

    JS测试显示器分辨率

    如果希望在页面加载时获取初始分辨率,可以在`window.onload`或`document.DOMContentLoaded`事件中执行上述代码: ```javascript window.addEventListener('DOMContentLoaded', (event) =&gt; { console.log('初始...

    AINMcl.github.io:显示器1280x720

    9. 函数和事件:例如window.onload和DOMContentLoaded事件,用于确保页面完全加载后执行JavaScript代码,以确保在任何分辨率下都能正确执行。 10. 测试和调试:在多种设备和分辨率下测试网页,确保在1280x720分辨率...

Global site tag (gtag.js) - Google Analytics