原生JS實現(xiàn)動態(tài)加載js文件并在加載成功后執(zhí)行回調(diào)函數(shù)的方法
本文實例講述了原生JS實現(xiàn)動態(tài)加載js文件并在加載成功后執(zhí)行回調(diào)函數(shù)的方法。分享給大家供大家參考,具體如下:
有的時候需要動態(tài)加載一個javascript文件,并且在加載成功后執(zhí)行回調(diào)函數(shù)(例如文件中保存了json數(shù)據(jù)之類的)。要實現(xiàn)這樣的功能,可以使用<script> 元素的load 事件(IE9+、chrome、FireFox等)和onreadystatechange 事件(IE8以下),直接上代碼:
function loadScript(src, callback) {
var script = document.createElement('script'),
head = document.getElementsByTagName('head')[0];
script.type = 'text/javascript';
script.charset = 'UTF-8';
script.src = src;
if (script.addEventListener) {
script.addEventListener('load', function () {
callback();
}, false);
} else if (script.attachEvent) {
script.attachEvent('onreadystatechange', function () {
var target = window.event.srcElement;
if (target.readyState == 'loaded') {
callback();
}
});
}
head.appendChild(script);
}
調(diào)用方法示例:
loadScript('http://cdn.staticfile.org/jquery/1.6.2/jquery.min.js',function(){
console.log('onload');
});
運行后控制臺輸出onload,如下圖所示:

補充一個函數(shù)
function sk_loadScript(url, callback) {
var script = document.createElement("script");
script.type = "text/javascript";
if(typeof(callback) != "undefined"){
if (script.readyState) {
script.onreadystatechange = function () {
if (script.readyState == "loaded" || script.readyState == "complete") {
script.onreadystatechange = null;
callback();
}
};
} else {
script.onload = function () {
callback();
};
}
}
script.src = url;
document.body.appendChild(script);
}
if(typeof jQuery=='undefined'){
sk_loadScript("/comments/js/jquery.js",function(){
sk_main();
});
}else{
sk_main();
}
上述代碼感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具http://tools.jb51.net/code/HtmlJsRun測試運行一下,看看運行結(jié)果如何。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript文件與目錄操作技巧匯總》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript錯誤與調(diào)試技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
echarts學(xué)習(xí)筆記之圖表自適應(yīng)問題詳解
最近發(fā)現(xiàn)一個問題,echarts圖初始化后不能自適應(yīng)瀏覽器的縮放,所以下面這篇文章就來給大家介紹了關(guān)于echarts圖表自適應(yīng)問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
JavaScript讀二進制文件并用ajax傳輸二進制流的方法
這篇文章主要介紹了JavaScript讀二進制文件并用ajax傳輸二進制流的方法的相關(guān)資料,需要的朋友可以參考下2016-07-07
表單input項使用label同時引用Bootstrap庫導(dǎo)致input點擊效果區(qū)增大問題
這篇文章主要介紹了表單input項使用label,同時引用Bootstrap庫,導(dǎo)致input點擊效果區(qū)增大問題的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-10-10
老生常談document.ready和window.onload
這篇文章主要介紹了document.ready和window.onload的相關(guān)知識,包括document.ready和window.onload的區(qū)別,要使用document.ready()或者document.onload()的原因分析,本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友參考下吧2024-01-01
JavaScript操作文件_動力節(jié)點Java學(xué)院整理
在HTML表單中,可以上傳文件的唯一控件就是<input type="file">。下面通過本文給大家分享JavaScript操作文件的方法,感興趣的朋友一起看看吧2017-06-06

