1。当您在地址栏中输入url并按Enter时会发生什么?1)域名解析成ip(因为浏览器无法通过域名直接找到服务器)2)TCP连接,三次握手1)浏览器向服务器发送请求2)服务器返回请求的HTMLcontenttothebrowser3)浏览器使用上面的方法往下解析HTML内容,解析完成后生成DOM树和css样式树。4)浏览器将DOM树和css样式树结合起来渲染到页面上。5)断开TCP连接,挥手四次。2、脚本标签defer,async属性有什么作用?浏览器解析HTML是自上而下同步执行的。这种情况下,如果script标签没有放在body标签之后,浏览器在解析脚本的时候,如果脚本的src指向了更大的资源,而且执行时间也很长,html的解析后面的元素将停滞不前。需要等到耗时的js资源加载执行完毕后才继续解析,导致页面加载时长白屏。defer和async属性的出现会很好的避免这个问题。相同点:1)通过两者的script标签,异步加载其src指向的js脚本,避免阻塞文档解析。区别:1)defer指向的js脚本异步加载后,waituntil文档解析完成后会执行脚本,async会在js脚本下载完成后立即执行。2)基于区别1),defer会在DOMContentLoaded事件触发前执行,async无法保证与DOMContentLoaded的顺序。:给脚本加上defer属性,和把脚本放在body底部效果是一样的。可以保证js脚本可以拿到页面的DOM,async指向的脚本不适合操作DOM。Tips:DOMContentLoaded事件是dom被加载了,但是还没有获取到各种标签中的内容,比如图片,所以我们看到有图片的区域会是空白的
