原生JS实现动态加载js文件并在加载成功后执行回调函数的方法

本文实例讲述了原生JS实现动态加载js文件并在加载成功后执行回调函数的方法。分享给大家供大家参考,具体如下:

有的时候需要动态加载一个javascript文件,并且在加载成功后执行回调函数(例如文件中保存了json数据之类的)。要实现这样的功能,可以使用<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);

}

调用方法示例:

loadScript('http://cdn.staticfile.org/jquery/1.6.2/jquery.min.js',function(){

console.log('onload');

});

运行后控制台输出onload,如下图所示:

补充一个函数

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测试运行一下,看看运行结果如何。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript文件与目录操作技巧汇总》、《JavaScript查找算法技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》、《JavaScript错误与调试技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

以上是 原生JS实现动态加载js文件并在加载成功后执行回调函数的方法 的全部内容, 来源链接: utcz.com/z/313051.html

回到顶部