Javascript加載方法
Javascript文件動態加載一直是比較困擾的一件事情,像網絡上傳的比較常見的做法:
function loadjs(fileurl){ var sct = teElement("script"); = fileurl; ndChild(sct);}
然後我們來測試一下結果:
function loadjs(fileurl){ var sct = teElement("script"); = fileurl; ndChild(sct); } loadjs(""); loadjs("") loadjs("")
代碼加載完後,會出現下圖的錯誤:
jquery明明是加載在第一個處理,為什麼還是報jQuery不存在的對象呢?
因為這樣加載,相當於開啟了三個線程,只是jquery這個文件先啟動線程,而jquery執行完這個線程的時間,超過了後面兩個時間. 因此後面執行完的,可能沒能找到jquery這個對象。
然這種方式怎麼處理呢?
其實文件的加載是有個狀態處理的.文件的加載有個onload事件,就是可以監聽文件是否加載完成的事件.
因此我們可以考慮這個方法來處理我們想要的結果.我們用直觀的方式來處理.改進後的.代碼如下:
function loadjs(fileurl, fn){ var sct = teElement("script"); = fileurl; if(fn){ ad = fn; } ndChild(sct); } loadjs("",function(){ loadjs("",function(){ loadjs("") }) });
OK,執行完這個代碼之後,加載文件都是在前一個加載完成後,才會加載另外一個,這樣就不會造成找不到用到的對象了.
然後我們來執行一個彈出框的效果,代碼裏面使用了 插件. 加載代碼如下:
loadjs("",function(){ loadjs("",function(){ loadjs("",function(){ t("Hello world!", function() { ("Hello world callback"); }); }) }) });
刷新頁面,就會直接顯示彈出框:
動態加載的代碼,往往容易在這裏花費很多時間調試.大家最好的辦法就是寫一個最簡單的例子,理解其中的原因. 這裏的代碼都可以進行封裝,還可以加入CSS文件的加載.作為自己的插件使用。
-
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想説説javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項。要傳遞給Function對象的從0開始的參數值...
-
PHP開發工程師的具體職責
PHP開發工程師的具體職責1職責:1,負責設計產品的前後台技術框架;2,承擔系統的開發工作,改進框架,基礎架構,持續優化服務;3,承擔關鍵項目的技術評審及總體設計,參與構建系統原型及關鍵技術問題的攻關活動;4,控制產品設計質量,制定產品開發規範、指導或撰寫方案、設計等文檔;5,...
-
JavaScript 函數表達式
JavaScript中創建函數主要有兩種方法:函數聲明和函數表達式。這兩種方式都有不同的適用場景。這篇筆記主要關注的是函數表達式的幾大特點以及它的使用場景,下面一一描述。主要特點可選的函數名稱函數名稱是函數聲明的必需組成部分,這個函數名稱相當於一個變量,新定...
-
學習JavaScript的7個理由
為什麼要學習JavaScript?學習JavaScript對我們的工作有什麼幫助麼?下面YJBYS小編為大家講解!需求我之所以這樣説的主要原因是,隨着JavaScript的日漸成熟,以及方案變得越來越可行,我們對JavaScript程序員的需求正在持續增長。JavaScript在需求比例上已經超過了C#,僅...