document.createElement('script')... 使用一个回调添加两个脚本

2023-12-25

我需要添加原型,然后添加 scriptaculous 并在它们都完成加载时获取回调。我目前正在加载原型,如下所示:

var script = document.createElement("script");
script.src = "http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js";
script.onload = script.onreadystatechange = callback;
document.body.appendChild( script );

我可以通过链接回调来做到这一点,但这似乎是不好的做法(当我需要加载更多脚本时,我不想要 20 个回调方法的愚蠢链)。有想法吗?


我建议你使用一些小型装载机,它可以链接并为你做一些事情。例如像这样的:

function loadScripts(array,callback){
    var loader = function(src,handler){
        var script = document.createElement("script");
        script.src = src;
        script.onload = script.onreadystatechange = function(){
            script.onreadystatechange = script.onload = null;
            handler();
        }
        var head = document.getElementsByTagName("head")[0];
        (head || document.body).appendChild( script );
    };
    (function run(){
        if(array.length!=0){
            loader(array.shift(), run);
        }else{
            callback && callback();
        }
    })();
}

该脚本应该帮助您构建脚本标签并在加载所有文件时调用回调。调用非常简单:

loadScripts([
   "http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js",
   "http://ajax.googleapis.com/ajax/libs/prototype/1.6.1.0/prototype.js"
],function(){
    alert('All things are loaded');
});

希望这会有所帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

document.createElement('script')... 使用一个回调添加两个脚本 的相关文章

随机推荐