我需要做的很简单,但(对我来说)很难做到:
使用 javascript ,给定图像名称,即“image01.jpg”,我需要检查此图像是否存在于某个文件夹或路径中(本地或网络上)。如果该文件夹下不存在该图像,我需要检查另一个文件夹中是否存在相同的图像。
例如,使用伪代码
imageToFind = 'image01.jpg'
path1 = 'users/john/images'
path2 = 'users/mike/img'
if path1+'/'+imageToFind exists
//do something
else
if path2+'/'+imageToFind exists
//do something
else
print('NOT FOUND')
你建议用什么方法?我首先尝试使用ajax实现这一点,然后使用javascript的Image(),但在这两种情况下都失败了。
提前感谢您的帮助,最好的问候
答案 0 :(得分:6)
使用onerror回调:
var img = new Image();
img.onerror = function(){
img = new Image(); // clean the error (depends on the browser)
img.onerror = function(){
console.log('not found at all !');
};
img.src = path2+'/'+imageToFind;
};
img.src = path1+'/'+imageToFind;
答案 1 :(得分:3)
您几乎可以依赖为图像节点触发的本地onload
和onerror
事件处理程序。所以它可能看起来像
var images = ['users/john/images/image01.jpg','users/mike/img/image01.jpg','some/more/path/image01.jpg'];
(function _load( img ) {
var loadImage = new Image();
loadImage.onerror = function() {
// image could not get loaded, try next one in list
_load( images.shift() );
};
loadImage.onload = function() {
// this image was loaded successfully, do something with it
};
loadImage.src = img;
}( images.shift() ));
此代码可能比您实际要求的更多。您可以基本上将图像路径添加到该数组中,脚本将搜索列表,直到它可以成功加载一个图像。
答案 2 :(得分:1)
尝试类似
的内容objImg = new Image();
objImg.src = 'photo.gif';
if(!objImg.complete)
{
img.src = path2+'/'+imageToFind; //load other image
}else{
img.src = path1+'/'+imageToFind;
}
答案 3 :(得分:0)
我想你需要问自己:为什么我不知道图像是否存在?
我觉得你不应该有这个问题,或者想以这种方式解决它。