使用Javascript将文件放入DOM中
为了避免Google Pagespeed Messeger“稍后解析Javascript”,我复制了这个脚本。使用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
函数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");