浏览器解析脚本和样式表的顺序

脚本和样式表的处理顺序

脚本:当解析器遇到<script>标签时,解析器就挂起,直到脚本执行完成才继续解析,当脚本是外部的,就是引用的那种时,必须首先从网络中获得该脚本文件,这也是以同步的方式完成的,就是说,解析器也会挂起,直到文件获取完毕,这样的模型已经使用了很多年,在html4和html5中都是这样规定的。开发者可以将脚本标记成“defer”,这样,解析器就不会在遇到脚本时挂起等待,html5则更进一步,通过新增了一个选项,使脚本标记为异步的,这样,解析和执行就放在不同的线程里了。

智能解析:Webkit和firefox都有这样的优化,那就是在执行脚本的时候,另一个线程解析余下的文档,并找出其他需要从网络中加在的资源文档,然后加载它们。在这种方式下,资源文件会通过并行的连接加载,因而整体速度要好的多。当然,智能解析并不会改变DOM树,那是主解析器做的事情,它只会解析外部引用的资源,例如脚本,样式表和图片。

样式表:样式表的解析则采用了另一种模型。原理上讲,样式表并不会改变DOM树,因此没有理由停下文档解析来等它。但是有个问题,如果脚本中有用到样式信息,而样式又没有加载并解析,这就会产生很多问题。Firefox的做法是,当一个样式表还在加载和解析过程中时,挂起所有脚本的执行。Webkit则稍微柔和些,只有在脚本需要访问那些没被加载的样式时才挂起等待。(所以,脚本里面尽量不要用到样式哦!)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值