javascript - hvordan vise alternativt bilde hvis kildebilde ikke finnes? (onerror fungerer i IE, men ikke i Mozilla)
Jeg trenger å vise et alternativt bilde i en celle i tabellen hvis kildbildet ikke blir funnet. For øyeblikket brukes koden nedenfor for å gjøre det.
cell.innerHTML="<img height=40 width=40 src='<%=request.getContextPath()%>/writeImage.htm' onError='ImgErrorVideo(this);'>"
function ImgErrorVideo(source){
source.src = "video.png";
source.onerror = "";
return true;
}
Nå er problemet at løsningen ovenfor fungerer i Internet Explorer, men ikke i Mozilla.
Vennligst fortell meg noen løsninger som fungerer i alle nettlesere.
Svar #1
Jeg synes dette er veldig fint og kort
<img src="imagenotfound.gif" alt="Image not found" onerror="this.src='imagefound.gif';" />
Men vær forsiktig. Brukerens nettleser vil sitte fast i en uendelig løkke hvis selve onerror-bildet genererer en feil.
REDIGER For å unngå en endeløs løkke, fjern onerror fra det med en gang.
<img src="imagenotfound.gif" alt="Image not found" onerror="this.onerror=null;this.src='imagefound.gif';" />
Ved å kalle this.onerror=null vil det fjerne onerror og deretter prøve å hente det alternative bildet.
NYTT Jeg vil gjerne legge til en jQuery-måte, hvis dette kan hjelpe noen.
<script>
$(document).ready(function()
{
$(".backup_picture").on("error", function(){
$(this).attr('src', './images/nopicture.png');
});
});
</script>
<img class='backup_picture' src='./images/nonexistent_image_file.png' />
Du trenger bare å legge til class='backup_picture' på hvilken som helst img-tag som du vil at et reservebilde skal lastes hvis det prøver å vise et dårlig bilde.
Svar #2
Jeg har fått løsningen på spørsmålet mitt:
jeg har gjort noe sånt som dette:
cell.innerHTML="<img height=40 width=40 alt='' src='<%=request.getContextPath()%>/writeImage.htm?' onerror='onImgError(this);' onLoad='setDefaultImage(this);'>"
function setDefaultImage(source){
var badImg = new Image();
badImg.src = "video.png";
var cpyImg = new Image();
cpyImg.src = source.src;
if(!cpyImg.width)
{
source.src = badImg.src;
}
}
function onImgError(source){
source.src = "video.png";
source.onerror = "";
return true;
}
På denne måten fungerer det i alle nettlesere.
