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 ); } DOMContentLoaded", DOMContentLoaded, false ); } 经过测试发现输出结果为下...大多数浏览器以事件的形式提供类似的功能DOMContentLoaded。
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一般是
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加载会造成阻塞吗?
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,beforeunload,unload HTML 页面的生命周期包含三个重要事件: DOMContentLoaded —— 浏览器已完全加载 HTML,并构建了...DOMContentLoaded DOMContentLoaded 事件发生在 document 对象上。...不会阻塞 DOMContentLoaded 的脚本: 此规则有两个例外: 具有 async 特性(attribute)的脚本不会阻塞 DOMContentLoaded,稍后[1] 我们会讲到。...DOMContentLoaded 和样式 外部样式表不会影响 DOM,因此 DOMContentLoaded 不会等待它们。 但这里有一个陷阱。...interactive —— 文档已被解析完成,与 DOMContentLoaded 几乎同时发生,但是在 DOMContentLoaded 之前发生。
说着两个属性之前先简单说一下DOMContentLoaded和load。...DOMContentLoaded:DOM内容加载完毕,页面会展示内容,但是图片、音视频等资源还未加载就触发DOMContentLoaded事件。...如果多个脚本同时生命defer,会按顺序下载和执行,同时会在DOMContentLoaded和load之前执行。...意思就是如果HTML解析完成了,脚本还没加载完成,那么一定会等脚本加载完成了才触发DOMContentLoaded。...Async会在load之前执行,但是不保证和DOMContentLoaded的执行顺序。
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
阻塞是怎么和 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'。
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 对于浏览器来说,页面加载主要有两个事件,一个是DOMContentLoaded,另一个是onLoad。...那么我们可以做出这样的假设 当页面只存在css,或者js都在css前面,那么DomContentLoaded不需要等到css加载完毕。...当页面里同时存在css和js,并且js在css后面的时候,DomContentLoaded必须等到css和js都加载完毕才触发。 我们先对第一种情况做测试: <!...因此,我们可以得出结论: 如果页面中同时存在css和js,并且存在js在css后面,则DOMContentLoaded事件会在css加载完后才执行。...其他情况下,DOMContentLoaded都不会等待css加载,并且DOMContentLoaded事件也不会等待图片、视频等其他资源加载。 以上,就是所有内容。
领取专属 10元无门槛券
手把手带您无忧上云