Javascript中defer属性解析

不同浏览器对于Javascript外部链接的加载顺序是不同的,尤其是在IE、FIrefox两者之间。为解决<script  src="xx.js"></script>中xx.js文件加载的不同,在script  src="xx.js" defer=“TRUE”></script>中加入defer属性,并设置该属性的值为TRUE。

IE中可以利用defer,defer的作用是把代码加载下来,并不立即执行,等文档加载完毕之后再执行,有点类似于window.onload,但是没有window.onload那样的局限性,可以重复使用,但是只在IE中有效。

在传统的浏览器其解析中,当HTML解析器遇到一个脚本,它必须按常规方法,终止对文档的解析并等待脚本执行。为了解决这个问题,HTML4标准定义了defer,通过defer来提示浏览器可以继续解析HTML文档,并延迟脚本执行。这种延迟在脚本从外部文件载入时非常有用,让浏览器不必等待外部文件全部载入之后才继续执行,能有效提高性能。IE是目前唯一支持defer属性的浏览器,但IE并没有正确的实行defer属性,因为延迟的脚本从事被延迟到文档结束,而不是只延迟到下一个非延迟脚本。这意味着,IE中延迟的脚本的执行顺序相当混乱,并且不能定义任何后面非延迟脚本必须的函数和变量。IE中所有defer的脚本执行时间应该是HTML文档树建立以后,window.onload之前。

目前只有Firefox和Opera确保执行顺序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值