如何使用HTML5中script元素async、defer-创新互联

本篇内容介绍了“如何使用HTML5中script元素async、defer”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联公司专注于噶尔网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供噶尔营销型网站建设,噶尔网站制作、噶尔网页设计、噶尔网站官网定制、微信小程序开发服务,打造噶尔网络公司原创品牌,更为您提供噶尔网站排名全网营销落地服务。创新互联专注于墨竹工卡网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供墨竹工卡营销型网站建设,墨竹工卡网站制作、墨竹工卡网页设计、墨竹工卡网站官网定制、小程序开发服务,打造墨竹工卡网络公司原创品牌,更为您提供墨竹工卡网站排名全网营销落地服务。成都创新互联公司专注于金川网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供金川营销型网站建设,金川网站制作、金川网页设计、金川网站官网定制、成都小程序开发服务,打造金川网络公司原创品牌,更为您提供金川网站排名全网营销落地服务。



现在WebKit为HTML5实现了SCRIPT标签的async异步属性。过去我们使用各种JavaScript技巧来做这种事情,但现在新的属性让防止阻塞变得相对容易。

async - HTML属性
如我前面提到的,添加async属性非常简单:



代码如下:


<!-- 指定async,以及 onload 回调-->
<script async src="siteScript.js" onload="myInit()"></script>



事实上,如果你的JavaScript以及HTML结构设计的合理,那么90%的情况下你的Script元素可以使用异步加载。

defer - HTML属性
Safari 浏览器额外添加了defer属性



代码如下:


<!-- 指定defer,效果和async差不多-->
<script defer src="siteScript.js" onload="myInit()"></script>



async 与 defer 的差别
WebKit官方博客 很好地解释了async 与 defer 的不同
------------------------------------
正常情况下,当浏览器在解析HTML源文件时如果遇到外部的script,那么解析过程会暂停,并发送请求来下载script文件,只有script完全下载并执行后才会继续执行DOM解析。比如:
<script src="myBlockingScript.js"></script>
在下载过程中浏览器是被阻止做其他有用的工作的,包括 解析HTML,执行其他脚本,以及展示CSS布局。虽然Webkit预加载扫描程序可以探测性地在下载阶段进行多线程下载,但是某些页面仍然存在很大的网络延迟。
当前有很多技术来提升页面显示速度,但都需要额外的代码以及针对特定浏览器的技巧。现在,script可以通过添加async或者defer属性来让脚本不必同步执行,示例如下:



代码如下:


<script async src="myAsyncScript.js" onload="myInit()"></script>
<script defer src="myDeferScript.js" onload="myInit()"></script>



async 和 defer 标注的 script 都不会暂停HTML解析就立刻被下载,两者都支持onload事件回调来解决需要该脚本来执行的初始化。
两者的区别在于执行时的不同:
async 脚本在script文件下载完成后会立即执行,并且其执行时间一定在 window的load事件触发之前。这意味着多个async脚本很可能不会按其在页面中的出现次序顺序执行。
与此相对,浏览器确保多个 defer 脚本按其在HTML页面中的出现顺序依次执行,且执行时机为DOM解析完成后,document的DOMContentLoaded 事件触发之前。

下面展示的是一个需要1秒来下载,以及1秒来解析执行其他操作的例子,我们可以看到整个页面载入花了大约2秒钟。
如何使用HTML5中script元素async、defer 
同样的例子,但这次我们指定了script的 defer 属性.因为当defer脚本下载的时候,其他操作可以并行执行,所以大概快了1倍。
如何使用HTML5中script元素async、defer 
------------------------------------
哪些浏览器支持async 和 defer
同样是上面引用的文章中提到:

除了基于Webkit的新版本浏览器,FireFox已经支持defer和onload属性很长时间了,而且从FF3.6开始添加了async属性。IE同样支持defer属性,但还不支持async属性,从IE9开始,onload属性也将被支持。

aynsc 棒极了!
看到webkit实现async我开心得合不拢嘴了。对每个网站来说,阻塞都是一个巨大的性能瓶颈,而可以直接指定script文件异步加载无疑会加快web页面的速度.

“如何使用HTML5中script元素async、defer”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!

名称栏目:如何使用HTML5中script元素async、defer-创新互联
文章出自:https://www.cdcxhl.com/article6/cehsog.html

成都网站建设公司_创新互联,为您提供建站公司全网营销推广移动网站建设网站策划网站改版网站维护

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网页设计公司