视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
JavaScript在浏览器中如何加载
2020-11-27 19:28:50 责编:小采
文档
 今天将和大家分享有关JavaScript中加载的过程,有一定的参考价值,希望对大家有所帮助

JavaScript加载是从他开始那一刻一直到浏览器按照事情顺序完成所有的事为止,大概步骤可以分为创建 document 对象==>文档解析完成==>文档加载完并执行完,接下来在文章中将和大家详细介绍。

加载过程

(1)解析 web 页面也就是解析 HTML 元素和他们的文本内容,将对像和文本添加到文档中,document处于加载中

文档解析

(2)通过link引入 外部 css,创建线程,进行异步加载。

(3)通过 script 引入外部 js,并且没有设置 async、defer,浏览器同步加载,并阻塞等

(4)等待js加载后为其设置有async、defer,浏览器创建线程异步加载,其中 async在脚本加载完成后立即执行(注意 :异步加载应禁止使用 document.write())

(5)遇到 img 等带有 src的属性,应该先正常解析 dom 结构,然后浏览器异步加载 src,并继续解析文档,如果 看到标签就直接生产 dom 树,不需要等着 img 加载完 scr。

(6)文档解析完成后,所有设置有 defer 的脚本会按照顺序执行。(注意与 async 的不同,但同样禁止使用 document.write());

(7)document 对象触发 DOMContentLoaded 事件,这也标志着程序执行从同步脚本执行阶段,转化为事件驱动阶段。

(8)当所有 async 的脚本加载完成并执行后、img 等加载完成后(页面所有的都执行加载完之后),document.readyState = 'complete',window 对象触发 load 事件。

(9)从此,以异步响应方式处理用户输入、网络事件等

注意

我们在写程序的时候最好将script标签写在下面,虽然写在上面不仅可以操作div,又可以在dom解析完就立刻处理,这样使效率更高,但是最好还是写在最下面

<div style="width:100px;height:100px;background: pink;">
<script>
var div=document.getElementsByTagName("div")[0]
div.onclick=function(){
this.style.background="hotpink";
}
</script>

总结:

下载本文
显示全文
专题