摘要: 客户端js的时间线:1、web浏览器创建Document对象,开始解析html和文本、生成Element对象和Text节点添加到文档中。这个阶段的document.readystate=="loading"2、当遇到没有async和defer的script标签时,停止文档的解析,开始请求并执行js3、当遇到有async或defer时,会先下载js,但不执行,等到文档解析完毕之后才执行4、当文档解析完成时,document.readyState=="interactive"5、开始执行defer或async的脚本6、浏览器在Document对象上触发DOM 阅读全文
posted @ 2014-01-22 20:48 charling 阅读(857) 评论(0) 推荐(0)
摘要: js的同步、异步和延迟1、默认情况下,js是同步和阻塞DOM解析的。在解析DOM的过程中,当遇到script时,会暂停DOM解析,开始请求script并执行js,执行完成之后再接着解析DOM树。2、之前一直不知道DOMReady是在什么时候,也从来没在书上看到对这个时间点的解释。现在感觉,DOMReady是解析完body的结束标签之后。所以所有的js的应该绑定在body标签之前。否则其中的DOMReady所触发的回调可能无法执行。3、想要js不阻塞DOM解析的方法有: 将js写在body的结束标签之前,其它所有的html之后 为script添加defer和async属性。添加了这两个属性是.. 阅读全文
posted @ 2014-01-22 09:38 charling 阅读(2013) 评论(0) 推荐(1)