JavaScript正在阻止加载图像

JavaScript正在阻止加载图像,javascript,yslow,Javascript,Yslow,我使用以下代码允许在我的网站上并行下载JavaScript var head = document.getElementsByTagName("head")[0]; var sTag1 = document.createElement("script"); sTag1.type = sTag1.type = "text/javascript"; sTag1.src = "http://example.com/one.js"; var sTag2 = document.createElem

我使用以下代码允许在我的网站上并行下载JavaScript

var head  = document.getElementsByTagName("head")[0]; 

var sTag1 = document.createElement("script");
sTag1.type = sTag1.type = "text/javascript";
sTag1.src = "http://example.com/one.js";

var sTag2 = document.createElement("script");
sTag2.type = sTag2.type = "text/javascript";
sTag2.src = "http://example.com/two.js";

var sTag1 = document.createElement("script");
sTag3.type = sTag3.type = "text/javascript";
sTag3.src = "http://example.com/three.js";

head.appendChild(sTag1); 
head.appendChild(sTag2); 
head.appendChild(sTag3); 
然而,使用YSlow,它显示即使
one.js
two.js
three.js
是并行下载的,图像也不会加载,直到最后一个JavaScript完全下载


我可以做些什么来避免由于我的JavaScript文件下载而阻止加载图像。

将您的JavaScript文件加载到
标记的正上方。

您从哪里触发该代码?因为您可以等待执行引用的代码,直到看到
窗口。load
事件,例如:

<script type='text/javascript'>
function loadMyScripts() {
    /* ...your loading code here...*/
}
window.onload = loadMyScripts; // Or use addEventListener/attachEvent to do it
</script>

函数loadMyScripts(){
/*…您的加载代码在此*/
}
window.onload=loadMyScripts;//或者使用addEventListener/attachEvent执行此操作

在加载所有图像之前,不会触发
window.load
事件,因此您可以确保脚本不会碍事。当然,它也给用户留下了相当大的时间空间来开始使用页面,因此,您需要确保页面不需要JavaScript才能正常工作。

我需要尽快提供此JavaScript,因为它执行对用户可见的AJAX渲染。@Hacki:基本上,您必须选择要优先处理的内容,AJAX渲染(对用户可见)或图像渲染(对用户可见). 除此之外,你还有一些常见的技巧:组合脚本,使它们只占用下载队列中的一个插槽,为图像留下(通常)另一个插槽供下载;缩小脚本;确保它们被gzip压缩;可能会将它们(或图像)移动到子域以提高并行性(因为浏览器限制了对同一端点的并发请求数量),[cont'd]@Hacki:[继续]使用一两个CDN,确保脚本可以在将来的很长时间内缓存,因此这只是第一次出现的问题(您可以在脚本名称中使用版本号,以便在更改它们时强制进行新加载)等等:-@TJ Crowder,我正在为我的合并脚本(SimpleCDN)使用CDN。另一个脚本是从Google.com加载Google地图。不幸的是,我不能合并。