摘要:最近在做個人項目中登陸界面的時候,需要加一個人機驗證也就是驗證碼的功能,和朋友商量再三由于時間有限,便選擇引入第三方的驗證碼。如果解析遇到多個標(biāo)簽,依次加載順序執(zhí)行。
最近在做個人項目中登陸界面的時候,需要加一個人機驗證也就是驗證碼的功能,和朋友商量再三由于時間有限,便選擇引入第三方的驗證碼。使用過程中發(fā)現(xiàn),該第三方驗證碼的實現(xiàn)邏輯基本是先編寫指定id的HTML標(biāo)簽,然后加載該第三方的js,由其自己渲染而成,因此借這個機會,再次學(xué)習(xí)總結(jié)一下傳統(tǒng)的
普通腳本
沒有 defer 或 async修飾,瀏覽器會立即加載并執(zhí)行指定的腳本,“立即”指的是在渲染該 script 標(biāo)簽后面的文檔元素之前,也就是說不等待后續(xù)載入的文檔元素,讀到就加載并執(zhí)行。 由于是模塊化開發(fā),在此采用的是再模塊內(nèi)通過動態(tài)方式加載第三方的驗證碼js,主要代碼如下。 為保證該第三方庫執(zhí)行時有其渲染的元素,所以設(shè)置為defer??赡芤l(fā)問題是如果網(wǎng)絡(luò)慢或其他原因會導(dǎo)致該驗證控件呈現(xiàn)較慢(暫時未遇到),所以項目中也加了遮罩處理。 參考
如果解析遇到多個function load (el, src, callback) {
if (!src) {
return;
}
// _verifyExist(src);
let scriptHeat = document.createElement("script");
scriptHeat.type = "text/javascript";
scriptHeat.src = src;
scriptHeat.defer = true;
/* 為保證兼容性,在此對回調(diào)包裝, */
isFunction(callback) && addOnloadHandler(scriptHeat, callback);
el.appendChild(scriptHeat);
}
function isFunction (fn) {
return Object.prototype.toString.call(fn) === "[object Function]";
}
function addOnloadHandler (el, callback) {
el.onload = el.onreadystatechange = function () {
if (!this.readyState || // 這是FF的判斷語句,因為ff下沒有readyState這人值,IE的readyState肯定有值
this.readyState === "loaded" || this.readyState === "complete" // 這是IE的判斷語句
) {
callback();
}
};
}
defer和async的區(qū)別
詳解defer和async的原理及應(yīng)用
MDN
前端文摘:深入解析瀏覽器的幕后工作原理
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/93976.html
摘要:徹底搞懂通過瀏覽器的開發(fā)者工具可以直觀的看到,圖中藍色的線和藍色的字使用不同的表現(xiàn)形式表示這個事件觸發(fā)的時間。當(dāng)腳本下載完后立即執(zhí)行,執(zhí)行順序不確定。 徹底搞懂 defer & async DOMContentLoaded showImg(https://segmentfault.com/img/remote/1460000013480394?w=1309&h=879); 通過 chr...
摘要:標(biāo)簽加載順序如果要談標(biāo)簽加載順序問題,首先要談的就是標(biāo)簽的位置,因為標(biāo)簽的位置對于加載順序來說有著很重要的影響。例如標(biāo)簽在以上代碼中,可能由于下載時間比較長,由于兩個標(biāo)簽都是異步執(zhí)行,互不干擾,因此可能就會先于執(zhí)行。 談?wù)? 標(biāo)簽加載順序的問題 這篇文章比較長,如果你耐心讀完了,我會感謝你愿意在這篇文章上花費時間,也希望你有收獲。 其實說起,幾乎搞前端的都知道他的作用:引入 JavaS...
摘要:前言是瀏覽器的內(nèi)置腳本語言。避免,在結(jié)構(gòu)生成之前調(diào)用節(jié)點,而產(chǎn)生錯誤 前言 JavaScript是瀏覽器的內(nèi)置腳本語言。當(dāng)網(wǎng)頁中嵌入了JavaScript腳本,瀏覽器加載網(wǎng)頁時,就會執(zhí)行腳本,從而操作瀏覽器,實現(xiàn)各種動態(tài)效果 JavaScript代碼嵌入網(wǎng)頁的方法 1、元素直接嵌入代碼 function sayHello() { alert(hello!); ...
閱讀 2660·2021-11-18 10:07
閱讀 1122·2021-08-03 14:04
閱讀 750·2019-08-30 13:08
閱讀 2604·2019-08-29 15:33
閱讀 1123·2019-08-29 14:07
閱讀 3024·2019-08-29 14:04
閱讀 1469·2019-08-29 11:19
閱讀 1172·2019-08-29 10:59