久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

HTML5 script元素async、defer異步加載使用介紹_html5教

HTML5 script元素async、defer異步加載使用介紹_html5教程技巧HTML5中文學(xué)習(xí)網(wǎng),是中國(guó)最大的HTML5中文門戶,為廣大HTML5愛(ài)好者提供各種HTML5資料,包括HTML5網(wǎng)站、HTML5資訊、HTML5應(yīng)用、HTML5游戲、
點(diǎn)評(píng):異步加載,可以理解為無(wú)阻塞并發(fā)處理,過(guò)去我們使用各種JavaScript技巧來(lái)做這種事情,現(xiàn)在WebKit為HTML5實(shí)現(xiàn)了SCRIPT標(biāo)簽的async異步屬性,感興趣的朋友可以了解下
(譯者注: 異步加載,可以理解為無(wú)阻塞并發(fā)處理.)

我對(duì)于HTML5感到興奮不已的原因之一是它實(shí)現(xiàn)了眾多業(yè)界期待已久的特性。我們一直需要輸入框顯示空白提示,但都是用JavaScript來(lái)實(shí)現(xiàn)的。我們也想要整個(gè)塊都變成可被點(diǎn)擊,也是使用JavaScript來(lái)實(shí)現(xiàn)。
現(xiàn)在WebKit為HTML5實(shí)現(xiàn)了SCRIPT標(biāo)簽的async異步屬性。過(guò)去我們使用各種JavaScript技巧來(lái)做這種事情,但現(xiàn)在新的屬性讓防止阻塞變得相對(duì)容易。

async - HTML屬性
如我前面提到的,添加async屬性非常簡(jiǎn)單:

復(fù)制代碼
代碼如下:

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

事實(shí)上,如果你的JavaScript以及HTML結(jié)構(gòu)設(shè)計(jì)的合理,那么90%的情況下你的Script元素可以使用異步加載。

defer - HTML屬性
Safari 瀏覽器額外添加了defer屬性

復(fù)制代碼
代碼如下:

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

async 與 defer 的差別
WebKit官方博客 很好地解釋了async 與 defer 的不同
------------------------------------
正常情況下,當(dāng)瀏覽器在解析HTML源文件時(shí)如果遇到外部的script,那么解析過(guò)程會(huì)暫停,并發(fā)送請(qǐng)求來(lái)下載script文件,只有script完全下載并執(zhí)行后才會(huì)繼續(xù)執(zhí)行DOM解析。比如:
<script src="myBlockingScript.js"></script>
在下載過(guò)程中瀏覽器是被阻止做其他有用的工作的,包括 解析HTML,執(zhí)行其他腳本,以及展示CSS布局。雖然Webkit預(yù)加載掃描程序可以探測(cè)性地在下載階段進(jìn)行多線程下載,但是某些頁(yè)面仍然存在很大的網(wǎng)絡(luò)延遲。
當(dāng)前有很多技術(shù)來(lái)提升頁(yè)面顯示速度,但都需要額外的代碼以及針對(duì)特定瀏覽器的技巧。現(xiàn)在,script可以通過(guò)添加async或者defer屬性來(lái)讓腳本不必同步執(zhí)行,示例如下:

復(fù)制代碼
代碼如下:

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

async 和 defer 標(biāo)注的 script 都不會(huì)暫停HTML解析就立刻被下載,兩者都支持onload事件回調(diào)來(lái)解決需要該腳本來(lái)執(zhí)行的初始化。
兩者的區(qū)別在于執(zhí)行時(shí)的不同:
async 腳本在script文件下載完成后會(huì)立即執(zhí)行,并且其執(zhí)行時(shí)間一定在 window的load事件觸發(fā)之前。這意味著多個(gè)async腳本很可能不會(huì)按其在頁(yè)面中的出現(xiàn)次序順序執(zhí)行。
與此相對(duì),瀏覽器確保多個(gè) defer 腳本按其在HTML頁(yè)面中的出現(xiàn)順序依次執(zhí)行,且執(zhí)行時(shí)機(jī)為DOM解析完成后,document的DOMContentLoaded 事件觸發(fā)之前。

下面展示的是一個(gè)需要1秒來(lái)下載,以及1秒來(lái)解析執(zhí)行其他操作的例子,我們可以看到整個(gè)頁(yè)面載入花了大約2秒鐘。
 
同樣的例子,但這次我們指定了script的 defer 屬性.因?yàn)楫?dāng)defer腳本下載的時(shí)候,其他操作可以并行執(zhí)行,所以大概快了1倍。
 
------------------------------------
哪些瀏覽器支持async 和 defer
同樣是上面引用的文章中提到:

除了基于Webkit的新版本瀏覽器,FireFox已經(jīng)支持defer和onload屬性很長(zhǎng)時(shí)間了,而且從FF3.6開(kāi)始添加了async屬性。IE同樣支持defer屬性,但還不支持async屬性,從IE9開(kāi)始,onload屬性也將被支持。

aynsc 棒極了!
看到webkit實(shí)現(xiàn)async我開(kāi)心得合不攏嘴了。對(duì)每個(gè)網(wǎng)站來(lái)說(shuō),阻塞都是一個(gè)巨大的性能瓶頸,而可以直接指定script文件異步加載無(wú)疑會(huì)加快web頁(yè)面的速度.
【網(wǎng)站聲明】本站除付費(fèi)源碼經(jīng)過(guò)測(cè)試外,其他素材未做測(cè)試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請(qǐng)勿用于商業(yè)用途。如損害你的權(quán)益請(qǐng)聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

這篇文章主要介紹了有關(guān)HTML5頁(yè)面在iPhoneX適配問(wèn)題,需要的朋友可以參考下
本篇文章主要介紹了html5中canvas圖表實(shí)現(xiàn)柱狀圖的示例,本文使用canvas來(lái)實(shí)現(xiàn)一個(gè)圖表,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
Adobe公司出品的多媒體處理軟件產(chǎn)品線較多,涵蓋了音視頻編輯、圖像處理、平面設(shè)計(jì)、影視后期等領(lǐng)域。這篇文章主要介紹了Adobe Html5 Extension開(kāi)發(fā)初體驗(yàn)圖文教程,非常不錯(cuò),需要的朋
這篇文章主要介紹了基于HTML5的WebGL經(jīng)典3D虛擬機(jī)房漫游動(dòng)畫,需要的朋友可以參考下
這篇文章主要介紹了html5實(shí)現(xiàn)移動(dòng)端適配完美寫法,需要的朋友可以參考下
本篇文章主要介紹了HTML5響應(yīng)式(自適應(yīng))網(wǎng)頁(yè)設(shè)計(jì)的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
主站蜘蛛池模板: 中文字幕第一页在线 | 亚洲成av人片在线观看 | 精品视频99 | 国产精品永久 | 国产成人精品久久二区二区91 | 欧美一级在线免费 | 国产一区二区在线免费观看 | 超碰97在线免费 | 日本特黄特色aaa大片免费 | 亚洲国产精品久久久 | 久久久久国产精品一区二区 | 久久激情av| 红色av社区 | 中文字幕一二三 | 欧美在线观看网站 | 四虎伊人| 亚洲bt 欧美bt 日本bt | 日韩精品激情 | 亚洲精品乱码久久久久久久久久 | 免费毛片网 | 亚洲区一区二区 | 狠狠干av | 日韩国产中文字幕 | 亚洲国产福利视频 | 国产真实乱全部视频 | 色婷婷久久综合 | 国产成人精品综合 | 欧洲精品码一区二区三区免费看 | 一级少妇女片 | 精品国产伦一区二区三区观看说明 | 国产区精品在线观看 | 精品毛片视频 | 麻豆精品久久 | 国产精品99久久久久久久久久久久 | 91中文视频 | 国产剧情一区 | 日韩欧美三级电影 | 国产亚洲精品91 | 99久9| 国产99久久 | 国产一区二区三区免费 |