最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS script腳本中async和defer區(qū)別詳解

 更新時(shí)間:2020年06月24日 11:50:21   作者:聽風(fēng)是風(fēng)  
這篇文章主要介紹了JS script腳本中async和defer區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一 引言

代碼如下

<script src="https://www.google.com/recaptcha/api.js" async defer></script>

可以看到在script標(biāo)簽中,存在async與defer兩個(gè)屬性,首先這兩個(gè)屬性并共存,說直白點(diǎn),你一個(gè)都不加,或者加兩個(gè)屬性其一,腳本加載規(guī)則都會(huì)不同,這點(diǎn)我在之前確實(shí)沒仔細(xì)了解過,導(dǎo)致我在實(shí)際開發(fā)中遇到了這樣一個(gè)問題:

我在同一個(gè)頁面需要引用2個(gè)script腳本,大致如下:

<script src="https://www.google.com/recaptcha/api.js"></script>
<script src="demo.js"></script>

注意,兩個(gè)script腳本都沒有添加async與defer屬性,demo.js中包含了谷歌人機(jī)驗(yàn)證的初始化程序,正常來說一定得先加載必要的資源,這樣我的驗(yàn)證碼才能初始化成功,這就像使用jQuery得先引用jQuery.js是一個(gè)道理。

但事實(shí)上,因?yàn)橥饩W(wǎng)的問題,api.js引用雖然在前面,但下載并不穩(wěn)定,有時(shí)候會(huì)出現(xiàn)下載反而比demo.js更晚的情況,這就導(dǎo)致demo.js中的初始化報(bào)錯(cuò),怎么辦呢?這就得async與defer出場了,我們先來了解它們的區(qū)別。

二 屬性async、defer與不加的區(qū)別

1 不加屬性

引用script腳本,最常見的就是直接引用,不加其它屬性,這種情況瀏覽器會(huì)立即下載并執(zhí)行指定的腳本,一氣呵成,腳本不執(zhí)行完畢,后面的DOM加載全部給我候著,如下圖:

2 屬性async

了解ajax的同學(xué)對(duì)于async這個(gè)詞一定不陌生,它表示異步,如果script腳本添加了此屬性,瀏覽器會(huì)異步下載后立刻同步執(zhí)行腳本。

說通俗點(diǎn),腳本下載是異步行為,下載過程中并不影響DOM加載,但一旦腳本下載完畢就會(huì)立刻同步執(zhí)行腳本,此時(shí)DOM加載還是得給我等著。如下圖:

3 屬性defer

與async一樣屬于異步下載腳本,但不同的地方是,腳本下載完成后并不會(huì)立刻執(zhí)行,而是等到DOM解析完成才會(huì)執(zhí)行腳本,相比async的粗暴,defer明顯更加實(shí)用。加載順序如下圖:

現(xiàn)在我們知道了腳本屬性async、defer以及不加的區(qū)別,回到文章開始的問題,我希望api.js一定在demo.js之前加載完成,不管需要等多久,所以我們可以這樣修改:

<script src="https://www.google.com/recaptcha/api.js" async></script>
<script src="demo.js" defer></script>

那么到這里本文正式結(jié)束。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JS中的模糊查詢功能

    JS中的模糊查詢功能

    這篇文章主要介紹了JS中的模糊查詢功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • javascript前端埋點(diǎn)上報(bào)的幾種方式

    javascript前端埋點(diǎn)上報(bào)的幾種方式

    本文將介紹前端埋點(diǎn)上報(bào)的幾種常見方式,并詳細(xì)闡述如何在項(xiàng)目中運(yùn)用這些方式進(jìn)行數(shù)據(jù)上報(bào),以幫助開發(fā)者更好地進(jìn)行數(shù)據(jù)收集和分析,感興趣的可以了解一下
    2023-11-11
  • JS循環(huán)發(fā)送請(qǐng)求時(shí)控制請(qǐng)求并發(fā)數(shù)實(shí)例

    JS循環(huán)發(fā)送請(qǐng)求時(shí)控制請(qǐng)求并發(fā)數(shù)實(shí)例

    這篇文章主要介紹了JS循環(huán)發(fā)送請(qǐng)求時(shí)控制請(qǐng)求并發(fā)數(shù)實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • TypeScript數(shù)組的定義與使用詳解

    TypeScript數(shù)組的定義與使用詳解

    數(shù)組對(duì)象是使用單獨(dú)的變量名來存儲(chǔ)一系列的值,數(shù)組非常常用,數(shù)組是具有連續(xù)存儲(chǔ)位置的相似類型元素的同質(zhì)集合。數(shù)組是用戶定義的數(shù)據(jù)類型。數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),我們?cè)谄渲写鎯?chǔ)相似數(shù)據(jù)類型的元素
    2022-09-09
  • 基于事件冒泡、事件捕獲和事件委托詳解

    基于事件冒泡、事件捕獲和事件委托詳解

    這篇文章主要介紹了事件冒泡、事件捕獲和事件委托,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • JavaScript高級(jí)程序設(shè)計(jì) 讀書筆記之十 本地對(duì)象Date日期

    JavaScript高級(jí)程序設(shè)計(jì) 讀書筆記之十 本地對(duì)象Date日期

    本地對(duì)象Date日期操作實(shí)現(xiàn)方法,需要的朋友可以參考下
    2012-02-02
  • JS生態(tài)系統(tǒng)加速一次一庫PostCSS SVGO的重構(gòu)源碼和性能優(yōu)化探索

    JS生態(tài)系統(tǒng)加速一次一庫PostCSS SVGO的重構(gòu)源碼和性能優(yōu)化探索

    這篇文章主要介紹了JS生態(tài)系統(tǒng)加速一次一庫PostCSS SVGO的重構(gòu)源碼和性能優(yōu)化探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • 兼容各大瀏覽器的JavaScript阻止事件冒泡代碼

    兼容各大瀏覽器的JavaScript阻止事件冒泡代碼

    本文給大家分享的是一段兼容各大瀏覽器的JavaScript阻止事件冒泡代碼,雖然因?yàn)闀r(shí)間問題沒有深入研究,但是還是相當(dāng)不錯(cuò)的,這里推薦給大家
    2015-07-07
  • avalonjs制作響應(yīng)式瀑布流特效

    avalonjs制作響應(yīng)式瀑布流特效

    瀑布流主要應(yīng)用在圖片展示頁面上。如果有一大批圖片需要展示,原始圖片尺寸不一致,又希望每張圖片都能不剪裁,完整顯示,那么就要給圖片規(guī)定一個(gè)寬度,解放它們的高度。利用網(wǎng)頁高度不限這個(gè)特性,充分利用頁面的空間,盡可能的展示多的圖片。下面我們就來詳細(xì)探討下
    2015-05-05
  • JS實(shí)現(xiàn)霓虹燈文字效果的方法

    JS實(shí)現(xiàn)霓虹燈文字效果的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)霓虹燈文字效果的方法,涉及javascript遍歷字符串及頁面樣式的動(dòng)態(tài)操作技巧,效果非常炫目華麗,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08

最新評(píng)論

西贡区| 宜黄县| 鹿邑县| 阳高县| 泽库县| 丹巴县| 安乡县| 平邑县| 鹤岗市| 班玛县| 原平市| 佛教| 永城市| 墨脱县| 奉贤区| 双桥区| 阜平县| 大港区| 太康县| 清远市| 乐至县| 新晃| 东辽县| 鄂伦春自治旗| 灵川县| 余庆县| 晴隆县| 蓬安县| 嘉峪关市| 广平县| 儋州市| 常熟市| 永城市| 苗栗市| 广灵县| 福泉市| 红安县| 康定县| 樟树市| 石阡县| 拜城县|