原生JS實(shí)現(xiàn)動態(tài)加載js文件并在加載成功后執(zhí)行回調(diào)函數(shù)的方法
本文實(shí)例講述了原生JS實(shí)現(xiàn)動態(tài)加載js文件并在加載成功后執(zhí)行回調(diào)函數(shù)的方法。分享給大家供大家參考,具體如下:
有的時候需要動態(tài)加載一個javascript文件,并且在加載成功后執(zhí)行回調(diào)函數(shù)(例如文件中保存了json數(shù)據(jù)之類的)。要實(shí)現(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'); });
運(yùn)行后控制臺輸出onload,如下圖所示:
補(bǔ)充一個函數(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代碼運(yùn)行工具http://tools.jb51.net/code/HtmlJsRun測試運(yùn)行一下,看看運(yùn)行結(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é)運(yùn)算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
使用plupload自定義參數(shù)實(shí)現(xiàn)多文件上傳
這篇文章主要介紹了使用plupload自定義參數(shù)實(shí)現(xiàn)多文件上傳的相關(guān)資料,非常不錯,具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07微信小程序?qū)崿F(xiàn)點(diǎn)擊導(dǎo)航條切換頁面
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)點(diǎn)擊導(dǎo)航條切換頁面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11原生JS實(shí)現(xiàn)ajax與ajax的跨域請求實(shí)例
下面小編就為大家分享一篇原生JS實(shí)現(xiàn)ajax與ajax的跨域請求實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12Javascript 獲取鏈接(url)參數(shù)的方法[正則與截取字符串]
有時我們需要在客戶端獲取鏈接參數(shù),一個常見的方法是將鏈接當(dāng)做字符串,按照鏈接的格式分解,然后獲取對應(yīng)的參數(shù)值。本文給出的就是這個流程的具體實(shí)現(xiàn)方法。2010-02-02js createRange與createTextRange的一些用法實(shí)例
關(guān)于createTextRange和createRange的一些用法,腳本之家增強(qiáng)版。2010-05-05Javascript中replace方法與正則表達(dá)式的結(jié)合使用教程
replace方法是javascript涉及到正則表達(dá)式中較為復(fù)雜的一個方法,嚴(yán)格上說應(yīng)該是string對象的方法,下面這篇文章主要給大家介紹了關(guān)于Javascript中replace方法與正則表達(dá)式的結(jié)合使用的相關(guān)資料,需要的朋友可以參考下2022-09-09