2

这似乎是一个被问了一千次的问题......但我已经花了两天时间,还没有解决。

我见过这样的答案尤其是第一个。但是当我尝试只使用 javascript 来完成时,程序永远不会等待。即使我把回报放进去

if(image.complete) {return path;}

与其等待图像加载,不如一无所有地退出。

这是我的代码。我想要它在纯 Javascript 中,因为函数的返回值是 d3.js 中 svg:image 的属性值

.attr("xlink:href", function (d) {
          var imagePath = "http://xxxxx/peopleimages/" + d.num + ".jpg";
          var img = new Image();
          function onErrorHandler(image) {
              image.onerror = "";
              image.src = genericPath;
              return false;
          }
          img.onerror = onErrorHandler(this);
          img.src = imagePath;

          return img.src;

提前致谢!

4

2 回答 2

0

我不知道您是否需要什么,但通常我使用 onload 和 onerror 并且我没有问题。有些是这样的:

function loadImg(targetId,imgURL){
    var contenedorImgs = document.getElementById("container");
    target = document.getElementById(targetId);
    var img = new Image();
    img.onload = function(){
        contenedorImgs.replaceChild(img,target);
        img.id = targetId;
    };
    img.onerror = function(){
        img.src = "http://marcocavalieri.es/fotos/miniaturas/1B.jpg";
    };
    img.src = "http://dev.marcocavalieri.es/fotos/" + imgURL;
} 

这段代码是我女儿和我为 Marco Cavalieri 开发的真实代码的摘录,您可以在http://dev.marcocavalieri.es看到,在这种情况下,我预加载了图像,因为我需要一些淡入和淡出。您可以在小提琴中看到生动的摘录示例:http: //fiddle.jshell.net/hmariod/kCRHV/1/

Bonne annee et bonne santé!

于 2013-01-01T18:19:01.113 回答
0

代码应该更像这样:

function onErrorHandler() {
    $(this).off('error', onErrorHandler);
    this.src = genericPath;
    return false;
}
$(img).on('error', onErrorHandler);
img.src = imagePath;

return img.src;
于 2012-09-27T16:04:59.803 回答