IE系列直到IE9才支持DOMContentLoaded事件,对于IE8及其之前版本,如果html内没有框架,则可以采用document.documentELement.doScroll来判断 是否构建好...所以可以采用这种方式: /** * 实现DomContentLoaded的兼容性 * @param callback */...function(){ onReady(callback); document.removeEventListener('DOMContentLoaded...Registered * functions are triggered by the first DOMContentLoaded, readystatechange, or * load event...any event we might receive if (document.addEventListener) { document.addEventListener("DOMContentLoaded
都知道window.onload吧,可是并非每一个人都知道DOMContentLoaded,事实上即使你不知道。非常有可能你也常常使用了这个东西。...普通情况下,DOMContentLoaded事件要在window.onload之前运行,当DOM树构建完毕的时候就会运行DOMContentLoaded事件,而window.onload是在页面载入完毕的时候..." , DOMContentLoaded, false ); }...这样做的原因是IE确实是不支持DOMContentLoaded这个事件的,为了代码的简单。就没为IE写了。...假设你是个jQuery使用者,你可能会常常使用(document).ready();或靠(function(){}) 这是用来DOMContentLoaded大事 版权声明:本文博主原创文章。
| 导语 大家都知道 HTML 文档完全加载和解析完成之后,会触发 DOMContentLoaded 事件,那么 HTML 里面的内容会如何影响文档解析呢?...DOMContentLoaded 触发定义 HTML 文档被完全加载和解析完成之后,会触发 DOMContentLoaded 事件,通常外部样式表和文档内的图片加载都不会影响该事件触发,不过也有特殊情况...下面具体分析一些场景下 DOMCOntentLoaded 触发时机。...第 6 步,才会去触发 DOMContentLoaded 事件。...页面生命周期:DOMContentLoaded,load,beforeunload,unload css 加载会造成阻塞吗 你不知道的 DOMContentLoaded 紧追技术前沿,深挖专业领域
',function(){ console.log("DOMContentLoaded!")...',function(){ console.log("DOMContentLoaded!")...',function(){ console.log("DOMContentLoaded!")...2. load、DOMContentLoaded? 2.1....DOMContentLoaded 当初始的 HTML 文档被完全加载和解析完成之后,DOMContentLoaded 事件被触发,而无需等待样式表、图像和子框架的完成加载。
原本只是想分享Network的一些内容,结果到DOMContentLoaded的时候给卡住了,网上很多强调css不会阻塞DOM解析,可以说对又可以说不对。...在MDN上面给出了DOMContentLoaded的解释: 当初始的 HTML 文档被完全加载和解析完成之后,DOMContentLoaded 事件被触发,而无需等待样式表、图像和子框架的完全加载。...第二种,我把link放到script之前,script里面没有任何内容,DOMContentLoaded比Load的时间差很多: ?...第三种,我把link放到script之后,script里面没有任何内容,DOMContentLoaded和Load的时间一样: ? 这边补充一下,script引入的也是一样的。...当然,也是很想知道DOMContentLoaded和css阻塞的具体原因,希望有研究V8源码的大佬可以给解答解答。 (完)
/index.js"> DOMContentLoaded和window.onload DomContentLoaded...在使用 DOMContentLoaded 更加合适的情况下使用 load 是一个令人难以置信的流行的错误,所以要谨慎。...注意:DOMContentLoaded 事件必须等待其所属script之前的样式表加载解析完成才会触发。.../index.css"/> 上面代码看出,在DOMContentLoaded后面引入样式表,DOMContentLoaded...DOM树构建完成,触发DOMContentLoaded 其他css、img、iframe等资源如果还未加载完成继续加载。
下面我们讨论一下 window.onload、DOMContentLoaded的执行顺序问题。 window.onload、DOMContentLoaded <!...所以说一般情况下,DOMContentLoaded事件要在window.onload之前执行,当DOM树构建完成的时候就会执行DOMContentLoaded事件。...( "DOMContentLoaded", DOMContentLoaded, false ); } <body onload="console.log...( "DOMContentLoaded", DOMContentLoaded, false ); } 经过测试发现输出结果为下...大多数浏览器以事件的形式提供类似的功能DOMContentLoaded。
DOMContentLoaded什么时候触发? DOMContentLoaded事件本身不会等待CSS文件、图片、iframe加载完成。...而 DOMContentLoaded 只有在 defer 脚本执行结束后才会被触发。...document.addEventListener("DOMContentLoaded",function () { console.log("DOMContentLoaded"+new Date...验证表明:interactive 》DOMContentLoaded 》 complete 》 onload 但是,DOMContentLoaded触发时候,document.readyState一般是...参考文章: 你不知道的 DOMContentLoaded JS、CSS以及img对DOMContentLoaded事件的影响 浏览器线程阻塞和无阻塞加载脚本的理解 css加载会造成阻塞吗?
DOMContentLoaded什么时候触发? DOMContentLoaded事件本身不会等待CSS文件、图片、iframe加载完成。...所以: 如果页面中没有script标签,DOMContentLoaded事件并没有等待CSS文件、图片加载完成。...而 DOMContentLoaded 只有在 defer 脚本执行结束后才会被触发。...document.addEventListener("DOMContentLoaded",function () { console.log("DOMContentLoaded"+new Date...验证表明:interactive 》DOMContentLoaded 》 complete 》 onload 但是,DOMContentLoaded触发时候,document.readyState一般是
foo(){ console.log(a); } function bar () { var a = 3; foo(); } var a = 2; bar(); //2 DOMContentLoaded...", DOMContentLoaded, false ); // A fallback to window.onload, that will always work...的赋值 if ( document.addEventListener ) { DOMContentLoaded = function() {...document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false ); jQuery.ready...(); }; } else if ( document.attachEvent ) { DOMContentLoaded = function
DOMContentLoaded 对于浏览器来说,页面加载主要有两个事件,一个是DOMContentLoaded,另一个是onLoad。...当页面里同时存在css和js,并且js在css后面的时候,DomContentLoaded必须等到css和js都加载完毕才触发。...('DOMContentLoaded'); })!...DOMContentLoaded事件。...其他情况下,DOMContentLoaded都不会等待css加载,并且DOMContentLoaded事件也不会等待图片、视频等其他资源加载。
readyRE.test(document.readyState) && document.body) callback($) else document.addEventListener('DOMContentLoaded...当文档结束渲染但在加载内嵌资源时,返回"interactive",并引发DOMContentLoaded事件。当文档加载完成时,返回"complete",并引发load事件....DomApi也提供了两个相关事件,一个是上面的DOMContentLoaded,另一个是load事件。...body element if (readyRE.test(document.readyState) && document.body) document.addEventListener('DOMContentLoaded...script type="text/javascript"> if(document.readyState == "loading") document.addEventListener('DOMContentLoaded
说着两个属性之前先简单说一下DOMContentLoaded和load。...DOMContentLoaded:DOM内容加载完毕,页面会展示内容,但是图片、音视频等资源还未加载就触发DOMContentLoaded事件。...如果多个脚本同时生命defer,会按顺序下载和执行,同时会在DOMContentLoaded和load之前执行。...意思就是如果HTML解析完成了,脚本还没加载完成,那么一定会等脚本加载完成了才触发DOMContentLoaded。...Async会在load之前执行,但是不保证和DOMContentLoaded的执行顺序。
DOMContentLoaded,load,beforeunload,unload HTML 页面的生命周期包含三个重要事件: DOMContentLoaded —— 浏览器已完全加载 HTML,并构建了...DOMContentLoaded DOMContentLoaded 事件发生在 document 对象上。...不会阻塞 DOMContentLoaded 的脚本: 此规则有两个例外: 具有 async 特性(attribute)的脚本不会阻塞 DOMContentLoaded,稍后[1] 我们会讲到。...DOMContentLoaded 和样式 外部样式表不会影响 DOM,因此 DOMContentLoaded 不会等待它们。 但这里有一个陷阱。...interactive —— 文档已被解析完成,与 DOMContentLoaded 几乎同时发生,但是在 DOMContentLoaded 之前发生。
DOMContentLoaded 对于浏览器来说,页面加载主要有两个事件,一个是DOMContentLoaded,另一个是onLoad。...那么我们可以做出这样的假设 当页面只存在css,或者js都在css前面,那么DomContentLoaded不需要等到css加载完毕。...当页面里同时存在css和js,并且js在css后面的时候,DomContentLoaded必须等到css和js都加载完毕才触发。 我们先对第一种情况做测试: <!...因此,我们可以得出结论: 如果页面中同时存在css和js,并且存在js在css后面,则DOMContentLoaded事件会在css加载完后才执行。...其他情况下,DOMContentLoaded都不会等待css加载,并且DOMContentLoaded事件也不会等待图片、视频等其他资源加载。 以上,就是所有内容。
domReady的理解 domReady是名为DOMContentLoaded事件的别称,当初始的HTML文档被完全加载和解析完成之后,DOMContentLoaded事件被触发,而无需等待样式表、图像和子框架的完全加载...再来看一下DOMContentLoaded事件与load事件的触发时机: 当初始的HTML文档被完全加载和解析完成之后,DOMContentLoaded事件被触发,而无需等待样式表、图像和子框架的完全加载...关于触发的时机,如果文档中全部为HTML与CSS则DomContentLoaded事件无需等到CSS加载完毕即可触发;当Js都在CSS之前DomContentLoaded事件无需等到CSS加载完毕即可触发...标签本身也属于DOM结构,必须等待其加载完成之后才能触发DomContentLoaded事件;异步加载的标签不会阻塞DOMContentLoaded事件。...对于支持DOMContentLoaded的浏览器使用DOMContentLoaded事件。 如果是小于525版本的Webkit则通过轮询document.readyState来实现。
阻塞是怎么和 DOMContentLoaded 与 onload 扯上关系的?...DOMContentLoaded 和 onload 在浏览器中加载资源涉及到 2 个事件,分别是 DOMContentLoaded 和 onload,那么它们之间有什么区别呢?... document.addEventListener('DOMContentLoaded', () => { console.log('DOMContentLoaded...DOMContentLoaded 遇到样式 前面我们已经介绍到 CSS 是不会阻塞 DOM 的解析的,所以理论上 DOMContentLoaded 应该不会等到外部样式的加载完成后才触发,这么分析是对的...正是因为 会阻塞 DOMContentLoaded 的触发,所以当外部样式后面有脚本(async 脚本和动态脚本除外)的时候,外部样式就会阻塞 DOMContentLoaded 的触发
在本文中,我们将详细介绍四个关键事件:DOMContentLoaded、load、beforeunload 和 unload。...DOMContentLoaded 1.1 属性 type:事件类型,值为 "DOMContentLoaded" bubbles:布尔值,指示事件是否会冒泡,默认为 false cancelable:布尔值...', function() { // DOMContentLoaded 事件触发后执行的逻辑 console.log('DOMContentLoaded event triggered'); }...); 在上面的示例中,我们使用 addEventListener 方法注册了一个 DOMContentLoaded 事件监听器。...当 DOMContentLoaded 事件触发时,控制台将输出 'DOMContentLoaded event triggered'。
DOMContentLoaded 事件比 onload 事件快许多,它是在 DOM 准备完毕后触发(不需等待资源下载完毕) DOMContentLoaded 事件在许多 Webkit 浏览器以及 IE9...上都可以使用,此事件会在 DOM 文档准备好以后触发,包含在 HTML5 标准中 对于支持此事件的浏览器,直接使用 DOMContentLoaded 事件是最简单最好的选择 IE6,7,8 都不支持...DOMContentLoaded 事件。...所以目前所有的 hack 方法都是为了让 IE6,7,8支持 DOM Ready 事件 下面代码可以发现 jQuery 的 ready 事件稍微早于 DOMContentLoaded 事件,但都是实现了...domready 事件(dom 加载完毕,资源加载前触发) document.addEventListener('DOMContentLoaded', function(){ alert("DOM
领取专属 10元无门槛券
手把手带您无忧上云