摘要:異步加載背景公司使用新的統(tǒng)計(jì)埋點(diǎn),由于彈層出現(xiàn)地方較多,新埋點(diǎn)方法未能及時(shí)壓入所以需要自己引入阿里云上的埋點(diǎn)文件問題在代碼里輸入后臺(tái)直出到頁面上并未去請(qǐng)求,導(dǎo)致代碼報(bào)錯(cuò)問題動(dòng)態(tài)異步添加到中由于是異步的導(dǎo)致還沒加載完下面的埋點(diǎn)調(diào)用就開始執(zhí)行了
javascript 異步加載
背景:公司使用新的統(tǒng)計(jì)埋點(diǎn),由于彈層出現(xiàn)地方較多,新埋點(diǎn)方法未能及時(shí)壓入common.js 所以需要自己引入阿里云上的埋點(diǎn)文件
問題1:在代碼里輸入
`
后臺(tái)直出到頁面上==script==并未去請(qǐng)求js,導(dǎo)致代碼報(bào)錯(cuò)
問題2:動(dòng)態(tài)==異步==添加到dom中
由于是 異步的 導(dǎo)致 js 還沒加載完 下面的埋點(diǎn)調(diào)用就開始執(zhí)行了 js報(bào)onloginit undefind
解決方法
; (function() { /** * 動(dòng)態(tài)加載js文件 * @param {string} url js文件的url地址 * @param {Function} callback 加載完成后的回調(diào)函數(shù) */ var _getScript = function(url, callback) { var head = document.getElementsByTagName("head")[0], js = document.createElement("script"); js.setAttribute("type", "text/javascript"); js.setAttribute("src", url); head.appendChild(js); //執(zhí)行回調(diào) var callbackFn = function(){ if(typeof callback === "function"){ callback(); } }; if (document.all) { //IE js.onreadystatechange = function() { if (js.readyState == "loaded" || js.readyState == "complete") { callbackFn(); } } } else { js.onload = function() { callbackFn(); } } } //如果使用的是zepto,就添加擴(kuò)展函數(shù) if(Zepto){ $.getScript = _getScript; } })();
在js加載完觸發(fā)回調(diào) 里執(zhí)行
js.onload = function callback() {}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/50468.html
摘要:前言是以單線程的形式運(yùn)行在宿主環(huán)境下,采用了回調(diào)的形式來解決異步任務(wù)。線程中步就是在瀏覽器下的。 前言 javascript 是以單線程的形式運(yùn)行在宿主環(huán)境下,javascript 采用了回調(diào)的形式來解決異步任務(wù)。 為什么是單線程? javascript 的最開始的出現(xiàn)是為了給 web 頁面增添一些動(dòng)態(tài)的效果,那么就避免不了獲取頁面上的元素信息,如果 javascript 是以多線程的...
摘要:單線程與瀏覽器多線程是單線程的因?yàn)檫\(yùn)行在瀏覽器中,是單線程的,每個(gè)一個(gè)線程。若以多線程的方式操作這些,則可能出現(xiàn)操作的沖突。零延遲零延遲并不是意味著回調(diào)函數(shù)立刻執(zhí)行。異步編程的中方法包括回調(diào)函數(shù)事件監(jiān)聽采用事件驅(qū)動(dòng)模式。 JavaScript單線程與瀏覽器多線程 Javascript是單線程的:因?yàn)镴S運(yùn)行在瀏覽器中,是單線程的,每個(gè)window一個(gè)JS線程。作為瀏覽器腳本語言,Ja...
摘要:遵循的是異步模塊定義規(guī)范,遵循的是通用模塊定義規(guī)范。不同的腳本加載這個(gè)模塊,得到的都是同一個(gè)實(shí)例。關(guān)于異步那些事就寫到這里了,很多地方理解的不夠深刻希望大家多多指教。 JS異步那些事 一 (基礎(chǔ)知識(shí))JS異步那些事 二 (分布式事件)JS異步那些事 三 (Promise)JS異步那些事 四(HTML 5 Web Workers)JS異步那些事 五 (異步腳本加載) 異步腳本加載 阻塞性...
摘要:本文簡述一些文件的同步和異步加載方式。當(dāng)然缺點(diǎn)是,不能保證有依賴關(guān)系的文件的加載順序。總結(jié)如果是單一或少數(shù)文件,可以在的最后插入標(biāo)簽,以同步方式加載。如果是多個(gè)文件,建議異步加載,以避免阻塞界面渲染,也縮短整體加載時(shí)間。 對(duì)于JS文件的引用,盡管當(dāng)前有不少框架和工具(比如webpack,commonjs,requiresjs等)都做了很好的處理。但是拋開這些框架,了解原生的加載方式還是...
摘要:異步加載異步加載指的是為指定加載的回調(diào)函數(shù),在的主體資源加載完畢之后,將自動(dòng)調(diào)用該回調(diào)函數(shù)。 幾種加載js的方式 同步加載 異步加載 延遲加載 同步加載 用的最多的一種方式,又稱阻塞模式,會(huì)阻止瀏覽器的后續(xù)處理,停止后續(xù)的解析,只有當(dāng)當(dāng)前加載完成,才能進(jìn)行下一步操作。所以默認(rèn)同步執(zhí)行才是安全的。但這樣如果js中有輸出document內(nèi)容、修改dom、重定向等行為,就會(huì)造成頁面堵塞。...
閱讀 1840·2023-04-26 00:59
閱讀 3136·2021-11-15 18:10
閱讀 3083·2021-09-22 16:02
閱讀 770·2021-09-02 15:15
閱讀 3722·2019-08-30 15:56
閱讀 1922·2019-08-30 15:54
閱讀 2864·2019-08-29 16:31
閱讀 2041·2019-08-29 16:10