这似乎是一个问了一千次的问题......但是我已经花了两天时间而且尚未解决这个问题。
我见过像this这样的答案,特别是第一个。但是当我尝试只使用javascript时,程序永远不会等待。即使我把回报放在
if(image.complete) {return path;}
它宁愿退出,只需等待图像加载。
这是我的代码。我希望它纯粹是Javascript,因为函数的返回值是d3.js中svg:image的attribut的值
.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;
提前致谢!
答案 0 :(得分:0)
代码应该更像这样:
function onErrorHandler() {
$(this).off('error', onErrorHandler);
this.src = genericPath;
return false;
}
$(img).on('error', onErrorHandler);
img.src = imagePath;
return img.src;
答案 1 :(得分: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/
Bonneannéeetbonnesanté!