我 发现在xhr中如果加载的内容 是html,并包含有js 与css这两种外部链接,这里的js是算做xhr加载 文件 的jquery的load会在js这些外部的文件加载完成之后退出,但是不会等css文件。这是我在查看分析了google chrome develper 的加载时间之后发现的问题。
在加载中js的执行是按顺序执行的,如果遇到外部文件 也会先执行外部文件里的再回到原文件。
关于html的加载:
总体上,html的是按从上到下的顺序边加载边解析,边生成dom对象,至于在html中夹杂的:
document.write("xxxx");
<script type="text/javascript" src="aaa.js"></script>
之类的东西,它们的顺序是怎样的呢?还是一样,如果在解析html时,遇到这些东西就会停止解析,转而执行这些生成语句,如果中间插入外部链接,就转而解析、执行外部链接对应的js。对于以下语句对于不同浏览器存在不同的结果:
<script type="text/javascript" src="aaa.js"></script>
在ie中。不会等待aaa.js下载并解析完的,会创建另一线程搞定它,而主线程则越过去。但在ff中。则会等待,直到aaa.js下载、解析、执行完毕。解决这个问题,可以利用HTML解析是解析完一个HTML标签,再执行下一个的原理,把代码拆分来实现。
document.write()会把输出写入到脚本文档所在的位置,浏览器解析完documemt.write()所在文档内容后,继续解析document.write()输出的内容,然后在继续解析HTML文档。