6

我需要做的事情说起来很简单,但(对我来说)很难做到:

使用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() ,但在这两种情况下我都失败了。

提前感谢您的帮助,最好的问候

4

4 回答 4

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;
于 2012-10-29T17:26:18.737 回答
3

您几乎可以依赖为Image 节点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() ));

这段代码可能比你实际要求的要多一点。您基本上可以将任意数量的图像路径放入该数组,脚本将搜索列表,直到它可以成功加载一个图像。

于 2012-10-29T17:28:04.663 回答
1

尝试类似的东西

objImg = new Image();
objImg.src = 'photo.gif';

if(!objImg.complete)
 { 
      img.src = path2+'/'+imageToFind; //load other image
  }else{
     img.src = path1+'/'+imageToFind;
  }
于 2012-10-29T17:25:56.707 回答
0

我想你需要问自己:为什么我不知道图像是否存在?

我觉得你不应该有这个问题,或者想以这种方式解决它。

于 2012-10-29T17:25:48.360 回答