1. 苏葳的备忘录首页
  2. 因特网

浏览器处理脚本和样式表的顺序

浏览器 CSS javascript因特网的模式是同步的,开发者希望解析器在遇到一个<script>标签时立即解析和执行脚本。在脚本执行完之前文档的解析会停下来。如果脚本是外部文件那么资源必须首先从网络上下载过来—这也是同步完成的,解析会等到资源下载完毕之后。这是多年以来的规则,HTML4和HTML5规范里也是如此定义。开发者也可以把脚本标记为“延迟”的,这样它就不会阻塞文档解析并将会在解析完之后执行。HTML5增加了一个标记脚本为异步的选项,这样它能在另一个线程里解析和执行。

预解析

Webkit和Firefox都有这种优化。当执行一个脚本时,另一个线程处理文档的其余部份,找出需要从网络下载的其它资源并装载它。这样以来资源可以用并发连接加载,能提高整体速度。注意—预解析不修改DOM树,把DOM树留给了主解析器,它只处理外部资源引用象外部脚本,样式表和图片。

样式表

另一方面样式表的模式有所不同。概念上,因为样式表不改变DOM树,没必要等待它们并且停止文档处理。因此就有了一个关于脚本在文档解析阶段请求样式信息的问题。如果样式仍未被加载和处理,脚本就会获得错误的结果,很明显这会导致很多问题。这看起来是个极端情况,但实际上很常见。Firefox在有个样式表正在加载和执行时中断所有脚本运行。Webkit只在脚本试图访问某种可能会受到未加载的样式表影响的样式信息时中断脚本解析和执行。

关于浏览器解析JavaScript的部份在后面单独一章叙述。

(待续)

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/2057.html

发表评论

邮箱地址不会被公开。 必填项已用*标注