成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

script關(guān)于async與defer屬性的測(cè)試

scola666 / 3478人閱讀

摘要:環(huán)境其它版本沒(méi)有測(cè)試,下列簡(jiǎn)稱(chēng)和分別延遲秒秒和立即,并會(huì)在控制臺(tái)里打印和測(cè)試代碼做測(cè)試步驟不為設(shè)定或時(shí)頁(yè)面會(huì)在所有加載和執(zhí)行完后渲染輸出和設(shè)置為會(huì)等的秒延遲后,控制臺(tái)會(huì)立即輸出和等的秒后會(huì)輸出并觸發(fā),最后觸發(fā)會(huì)等的秒延遲后,控制臺(tái)會(huì)立即

環(huán)境:

chrome31/firefox25/IE11(其它版本沒(méi)有測(cè)試),下列簡(jiǎn)稱(chēng)chrome/firefox/IE

http://127.0.0.1:8081/test1、http://127.0.0.1:8081/test2和http://127.0.0.1:8081/test3分別延遲5秒、3秒和立即,并會(huì)在控制臺(tái)里打印test1、test2和test3

測(cè)試代碼:

HTML:





script async defer







nodejs做server:

var http = require("http");
http.createServer(function(req, res) {
    res.writeHead(200, {
        "Content-Type": "text/plain"
    });
    if (req.url == "/test1") {
        setTimeout(function() {
            res.end("console.log("test1");");
        }, 1000 * 5);
    } else if (req.url == "/test2") {
        setTimeout(function() {
            res.end("console.log("test2");");
        }, 1000 * 3);
    } else {
        res.end("console.log("test3");");
    }
    // res.end("Hello World
");
}).listen(8081, "127.0.0.1");
console.log("Server running at http://127.0.0.1:8081/"); 
測(cè)試步驟:

不為script設(shè)定defer或async時(shí)

頁(yè)面會(huì)在所有script加載和執(zhí)行完后渲染 ,輸出test1、test2和test3,DOMContentLoaded,onload

設(shè)置defer

test1為defer ,chrome/IE會(huì)等test2的3秒延遲后,控制臺(tái)會(huì)立即輸出test2和test3,等test1的5秒后會(huì)輸出test1并觸發(fā)DOMContentLoaded,最后觸發(fā)onload;firefox會(huì)等test2的3秒延遲后,控制臺(tái)會(huì)立即輸出test2和test3并觸發(fā)DOMContentLoaded,等test1的5秒后會(huì)輸出test1,最后觸發(fā)onload;

test1和test2都為defer時(shí),chrome/IE會(huì)立即輸出test3,盡管test2比test1先加載完成但是只有等到test1加載完成執(zhí)行后才繼續(xù)執(zhí)行,輸出為test1和test2并觸發(fā)DOMContentLoaded,最后觸發(fā)onload;firefox會(huì)立即輸出test3并觸發(fā)DOMContentLoaded,test2下載完后等test1下載完并執(zhí)行后才執(zhí)行,輸出test1和test2,最后觸發(fā)onload

設(shè)置async

test1為async ,等test2的3秒延遲后,會(huì)立即輸出test2和test3并觸發(fā)DOMContentLoaded,等test1的5秒后會(huì)打印test1,最后觸發(fā)onload

test1和test2都為async時(shí) ,會(huì)立即輸出test3并觸發(fā)DOMContentLoaded,test2先加載完先打印test2,test1后加載完打印test1,最后觸發(fā)onload

結(jié)論:

不設(shè)置async和defer時(shí),頁(yè)面會(huì)等script下載執(zhí)行完后繼續(xù)執(zhí)行

設(shè)置defer時(shí),會(huì)下載腳本,但是不會(huì)立即執(zhí)行并且按照script順序觸發(fā)

設(shè)置async時(shí),會(huì)下載腳本,但是不會(huì)立即執(zhí)行并不一定按照script順序觸發(fā)

無(wú)論是否設(shè)置了defer或async,該script會(huì)在onload前執(zhí)行

IE/chrome在設(shè)置defer時(shí),與firefox不同,前者會(huì)等腳本都執(zhí)行后才執(zhí)行DOMContentLoaded,而后者會(huì)先于腳本執(zhí)行

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/77953.html

相關(guān)文章

  • Script標(biāo)簽和腳本執(zhí)行順序 - 文檔加載 - 面向?yàn)g覽器編程

    摘要:相關(guān)腳本會(huì)立即下載并執(zhí)行。從上面兩個(gè)例子,可以充分了解到標(biāo)簽的柱塞式執(zhí)行。表示該標(biāo)簽并不柱塞,也不同步執(zhí)行。屬性帶有屬性的腳本,同樣會(huì)推遲腳本的執(zhí)行,并且不會(huì)阻止文檔解析。同時(shí),帶有的腳本彼此之間,能保證其執(zhí)行順序。 原文: http://pij.robinqu.me/Browser_Scripting/Document_Loading/ScriptTag.html 源...

    cangck_X 評(píng)論0 收藏0
  • 腳本加載和執(zhí)行

    摘要:現(xiàn)在對(duì)的使用非常普遍,任何一個(gè)站點(diǎn)都會(huì)請(qǐng)求大量的腳本,而加載和執(zhí)行的方式也是各不相同,希望讀完這篇文章可以對(duì)常用的加載和執(zhí)行方式有一個(gè)整體的認(rèn)識(shí)??偨Y(jié)上文主要介紹了動(dòng)態(tài)創(chuàng)建腳本和的方式去創(chuàng)建異步加載和執(zhí)行腳本的方式。 在打開(kāi)一個(gè)站點(diǎn)的時(shí)候,瀏覽器會(huì)去加載各種資源?,F(xiàn)在對(duì)JS的使用非常普遍,任何一個(gè)站點(diǎn)都會(huì)請(qǐng)求大量的JS腳本,而加載和執(zhí)行的方式也是各不相同,希望讀完這篇文章可以對(duì)常用的加...

    TANKING 評(píng)論0 收藏0
  • 重新認(rèn)識(shí)script標(biāo)簽

    摘要:盡管腳本的下載過(guò)程中不會(huì)相互影響,但頁(yè)面仍然要等到所有代碼下載并完成執(zhí)行才能繼續(xù)。 defer和asnyc(只對(duì)外部文件有效) defer 在頁(yè)面完成解析時(shí)執(zhí)行代碼,這個(gè)屬性表明腳本在執(zhí)行時(shí)不會(huì)影響頁(yè)面的構(gòu)造,在元素中設(shè)置這個(gè)屬性相當(dāng)于告訴瀏覽器立即下載但延遲執(zhí)行 async 相對(duì)于頁(yè)面其他部分異步執(zhí)行腳本,一般的script標(biāo)簽都是會(huì)阻塞頁(yè)面執(zhí)行的,沒(méi)有加上async屬性的標(biāo)簽...

    Magicer 評(píng)論0 收藏0
  • 關(guān)于外部樣式表也許你不知道

    摘要:如下圖所示,外部樣式表是否會(huì)阻塞解析先不要看答案,可以自己思考和實(shí)驗(yàn)一下通過(guò)如上圖所示,并沒(méi)有阻塞解析,因?yàn)闀r(shí)間線在之后。并且都支持事件回調(diào)處理,用于一些初始化工作。為了盡早地觸發(fā)事件,因?yàn)闀?huì)延遲事件觸發(fā)。 singsong: 文章中 demo 猛戳這里吧 ??最新內(nèi)容請(qǐng)以github上的為準(zhǔn)?? 在講解之前,先看一個(gè)問(wèn)題。如下圖所示,外部樣式表是否會(huì)阻塞 HTML 解析(先不要看答...

    RobinQu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<