[精讚] [會員登入]
9992

[HTML5] script 的新增屬性 defer, async

script 的新增屬性 defer, async

分享此文連結 //n.sfs.tw/10323

分享連結 [HTML5] script 的新增屬性 defer, async@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-10-25 13:57:37 最後編修
2016-11-30 08:37:07 By 張○○
 

自動目錄

一般我們引入一個外部的javascript會使用這樣的寫法:

<script src="/path/to/your.js"></scrpt>

 * 預設用法
 * 下載後會先執行,執行完此js後頁面才會繼續繪製下去。
 * 如果這個js很大或是要執行不少時間,畫面會卡卡的

在HTML5中新增定義了三個屬性 async, defer

async屬性

<script async src="/path/to/your.js"></scrpt>

 * 一定要搭配 src的屬性才有作用
 * 下載後會先執行,但執行此js同時也繼續載入頁面及執行其他js。
 * 目前的所有瀏覽器都支援(2016)
 * 使用時機:此js和其他的js無連帶關係,即不需等待其他的js執行完,可獨立作業。

defer屬性

<script defer src="/path/to/your.js"></scrpt>

 * 一定要搭配 src的屬性才有作用
 * 要整個頁面都下載及分析完成後才會執行,非常類似於把js放在頁尾的情況。
 * 目前的所有瀏覽器都支援(2016)
 * 使用時機:此js一定要頁面全繪完再執行才行

async+defer屬性

<script async defer src="/path/to/your.js"></scrpt>

 * 一定要搭配 src的屬性才有作用
 * 要整個頁面都下載及分析完成後才會非同步執行這個js後面剩下的部分。

參考資料[2]有簡單明瞭的時序圖

測試

HTML

<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<script async src="01.js"></script>
<script defer src="02.js"></script>
</head>
<body>
Page START<br/>
Page END
</body>

JS 01.js

alert(1);

JS 02.js

alert(2);

測試結果

頁面畫完->1->2

拿掉async和defer結果:

1->2->頁面畫完

參考資料

[1] http://www.w3schools.com/tags/att_script_async.asp

[2] http://www.growingwiththeweb.com/2014/02/async-vs-defer-attributes.html

[3] http://blog.xuite.net/vexed/tech/61308318-script+tag+%E5%B1%AC%E6%80%A7+async+defer+%E5%B7%AE%E5%88%A5

END

你可能感興趣的文章

[CSS] 背景 background css 中最常用的特性(property)之一就是 background ,這個有什麼好難的?事實上 backgroun

[CSS] placeholder 屬性的CSS怎麼設定? 常會用到的placeholder可以在沒填值時有提示的文字,想要改變格式該怎麼做?

CSS 的 !important 意義 網頁的前端工程師非常頭痛的事,就是同時要處理 IE和 FF等不同的瀏覽器,更糟的是 IE 又分成了 6 7 8三種版本,

產生模糊的文字 有時我們需要產生模糊的文字,類似毛玻璃看到的效果。

[HTLM5] 表單color、email、url、search、tel輸入類型 介紹HTML5好用的輸入類型:color、email、url,以及兩個形同雞肋的類型search、tel..

如何讓瀏覽器每次都重新載入css、js、圖檔 不管怎麼刷新網頁,他總是跑出來舊的內容,這對開發的人來說很困擾...

隨機好文

[jQuery] 利用load()來達成ajax的寫法 jQuery中利用load()來達成ajax的寫法,也有人稱他是假的ajax,作法就是..

[札記] 2016.7~12月札記 札記,只是札記

[JAVA] JWS, JWT, JWE, JOSE是什麼? [JAVA] JWS, JWT, JWE, JOSE是什麼?非常的複雜,儘量來搞清楚..

正則表達式:Email名稱防止連續輸入點(.)及下底線(_) Email的名稱中要允許特殊符號,但又不允許連續出現的正則表達式

「許功蓋」的字以及源由 有玩過電腦一段時間的人,都聽過這個人(有一天我才發現7年級的竟然都不認識這個