2012-09-27 2 views
2

이것은 수천 번 묻는 질문인데 ... 이틀을 보냈지만 아직 해결하지 못했습니다.깨진 이미지 만 바꿔서 바꿔주세요.

나는 특히 this과 같은 답변을 보았습니다. 하지만 자바 스크립트 만 사용하려고하면 프로그램이 대기하지 않습니다. 비록 내가 반환을 넣어도

if(image.complete) {return path;} 

이미지로드를 기다리는 것보다 아무것도 나오지 않는다.

여기 내 코드가 있습니다. 함수의 반환은 SVG의 attribut의 값이기 때문에 순수 자바 스크립트에서 원하는 : 사전에 d3.js

.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

코드는 더 같이해야한다 :

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

return img.src; 
+0

죄송 합니다만 javascript에 완전히 익숙하지 않습니다. 콘솔에 HTMLImageElement에 'on'메서드가 없습니다. – wceo

+0

죄송합니다. 실수입니다. 결정된. – bfavaretto

+0

죄송합니다. 반환은 여전히 ​​기다리지 않습니다 onErrorHandler = ( – wceo

0

당신이 필요하지만, 일반적으로 내가 온로드와의 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; 
} 

이 코드는 실제 코드 내 딸의 발췌 한 것입니다 그리고 당신이 내가 fadein과 fadeouts 일부 필요하기 때문에 나는 이미지를 미리로드이 경우, http://dev.marcocavalieri.es에서 볼 수 마르코 카발리 에리를 위해 개발 . 바이올린에서 살아있는 발췌 예를 볼 수 있습니다 : http://fiddle.jshell.net/hmariod/kCRHV/1/

Bonne année et bonne santé!

관련 문제