【发布时间】:2014-06-10 02:10:27
【问题描述】:
我正在尝试预加载许多(数千张)图像,并认为我做得对。我有一个数组中的所有 URL(有些是有效的,有些不是)。我遍历数组,并将onload 和onerror 事件附加到img.src 函数。当图像事件返回 error 时,我不会将其添加到“好”数组中,而是在我的循环中添加 continue。
但是,我注意到,虽然这应该会阻止图像进入我的“好”数组,但并非总是如此(实际上我有足够的图像,我不知道它是否会这样做)。当我实际将这些图像加载到页面中时,我会在控制台中看到损坏的图像符号和 404。
我在预加载时在控制台中看到404 错误,所以我假设它确实检测到一些损坏的图像但不是全部,或者它们仍然会进入我的其他阵列?可能是图像加载速度如此之快以至于我的continue 语句不起作用(有数千个)?如果是这样,有没有办法解决这个问题?我在下面附上了我的代码,这里我尝试在.onerror 条件中使用continue,但我猜img.src 使它成为无效的循环条件。感谢您的帮助。
编辑:
src 属性是对象的一个属性,它也会有name 和userName 属性,所以我只想添加具有有效url 的对象。我试图缩写我的代码,但应该添加这部分(我只添加了前三行,尽管我现在意识到我应该 push 项目 onload
var name = 'test',
username = 'testUser'
url;
for(i = 0; i < imgURLs.length; i++) {
url = url[i];
var img = new Image();
valid = true;
img.onload = function(){
console.log('New Media Loaded')
};
img.onerror = function(){
console.log('error: bad image source');
valid = false;
};
img.src = url;
if(valid) {
goodArray.push(img);
}
}
【问题讨论】:
标签: javascript jquery ajax image preload