使用Javascript将文件放入DOM中

使用Javascript将文件放入DOM中,javascript,Javascript,为了避免Google Pagespeed Messeger“稍后解析Javascript”,我复制了这个脚本。 函数downloadJSAtOnload(){ var元素=document.createElement(“脚本”); element.src=”http://example.com/templates/name/javascript/jquery.js"; document.body.appendChild(元素); var element1=document.createEle

为了避免Google Pagespeed Messeger“稍后解析Javascript”,我复制了这个脚本。


函数downloadJSAtOnload(){
var元素=document.createElement(“脚本”);
element.src=”http://example.com/templates/name/javascript/jquery.js";
document.body.appendChild(元素);
var element1=document.createElement(“脚本”);
element1.src=”http://example.com/templates/name/javascript/jquery.colorbox-min.js";
文件.正文.附件(要素1);
}
if(window.addEventListener)
addEventListener(“加载”,downloadJSAtOnload,false);
else if(窗口附件)
window.attachEvent(“onload”,downloadJSAtOnload);
其他的
window.onload=下载jsatonload;

因为我需要在DOM中再插入一个javascript文件,我怎么能用循环来解决这个问题呢

问候
Ron

您可以创建这样一个函数,该函数接受任意数量的脚本文件名:

function loadScriptFiles(/* pass any number of .js filenames here as arguments */) {
    var element;
    var head = document.getElementsByTagName("head")[0];
    for (var i = 0; i < arguments.length; i++) {
        element = document.createElement("script");
        element.type = "text/javascript";
        element.src = arguments[i];
        head.appendChild(element);
    }
}

function downloadJSAtOnload() {
    loadScriptFiles(
        "http://example.com/templates/name/javascript/jquery.js",
        "http://example.com/templates/name/javascript/jquery.colorbox-min.js",
        "http://example.com/templates/name/javascript/myJS.js"
    );
}

 if (window.addEventListener)
    window.addEventListener("load", downloadJSAtOnload, false);
 else if (window.attachEvent)
    window.attachEvent("onload", downloadJSAtOnload);
 else 
    window.onload = downloadJSAtOnload;

基本上,您想将downloadJSAtOnload()更改为循环一组脚本名称吗?非常感谢您打开我的眼睛。当然,在循环中使用脚本文件的解决方案是非常糟糕的。现在我尝试使用LABjs。网站现在速度很快,但colorbox不起作用。@user1286819-我猜你的加载顺序不正确,但如果没有看到你的特定代码,我不知道你可能有什么错误。这是我使用的代码$LAB.script(“templates/name/javascript/jquery.js”).script(“templates/name/javascript/jquery.colorbox-min.js”)。等等();-这应该在加载jquery后执行jquery.colorbox。@user1286819-代码在注释中确实不可读。我想您有
.wait()
放错了地方。请看我在答案末尾添加的内容。之前我也尝试过你的版本,但它不起作用。现在我看到该脚本在IE和Firefox中运行良好,但在Chrome中,配色盒不起作用。即使是firebug for Chrome也没有显示任何失败。
function loadScriptFiles(/* pass any number of .js filenames here as arguments */) {
    var element;
    var head = document.getElementsByTagName("head")[0];
    for (var i = 0; i < arguments.length; i++) {
        element = document.createElement("script");
        element.type = "text/javascript";
        element.src = arguments[i];
        head.appendChild(element);
    }
}

function downloadJSAtOnload() {
    loadScriptFiles(
        "http://example.com/templates/name/javascript/jquery.js",
        "http://example.com/templates/name/javascript/jquery.colorbox-min.js",
        "http://example.com/templates/name/javascript/myJS.js"
    );
}

 if (window.addEventListener)
    window.addEventListener("load", downloadJSAtOnload, false);
 else if (window.attachEvent)
    window.attachEvent("onload", downloadJSAtOnload);
 else 
    window.onload = downloadJSAtOnload;
$LAB 
   .script("templates/name/javascript/jquery.js").wait()
   .script("templates/name/javascript/jquery.colorbox-min.js");