Avatar billede prebenrunge Nybegynder
26. oktober 2008 - 11:23 Der er 8 kommentarer og
1 løsning

Hvordan valideres om et billed er fundet ?

Jeg har nogle billeder (jpg) som jeg viser på min html side vha. javascript (document.getElementById("adpointicon").src=imagesti)
fra et externt drev (stien er tilsat et nr ud fra hvad der vælges).
Nogle gange findes billedet ikke endnu og så får jeg kun den kendte tomme billedbox med X i.
Jeg ville godt kunne fortælle at billedet ikke findes endnu og så vises mit standard icon (0.jpg)

Spørgsmålet går på om man kan kontrollerer om den angivne sti,virkelig indeholder et billed, eller ej og så handle ud fra resulatatet.(altså vises billed eller et standard billed)?
Avatar billede w13 Novice
26. oktober 2008 - 11:48 #1
Det mener jeg ikke, du kan på nogen måde med JavaScript. Især fordi browserne opfører sig forskelligt, når de ikke finder et billede.

Et serversprog (såsom ASP eller PHP) egner sig meget bedre til det. F.eks. kan PHP's .htaccess-fil sættes til at erstatte alle ikke-fundne billeder med et bestemt standard-billede.
Og dén kommando fylder kun én linje kode.
Avatar billede thesurfer Nybegynder
26. oktober 2008 - 16:17 #2
Nu kan jeg ikke huske om det er gyldigt/valid, men du kan putte onerror event på dine billeder..

Eksempel:

<img src="eksisterer_ikke.jpg" onerror="this.setAttribute('src','eksisterer.jpg')">
Avatar billede w13 Novice
26. oktober 2008 - 16:31 #3
Onerror er ikke med i nogen standarder, så vidt jeg husker, men den ville kunne løse problemet i mange tilfælde.

Man kunne så også bare indsætte dette nederst i body, så vil den selv sætte onerror på alle billeder på siden:

<script type="text/javascript">
for (var i=0, im=document.getElementsByTagName("img"); i<im.length; i++)
  im[i].onerror=new Function("this.setAttribute('src','eksisterer.jpg')");
</script>
Avatar billede olebole Juniormester
26. oktober 2008 - 19:40 #4
<ole>

Nej, det er ikke en option. Et img element kan ikke udløse den slags events. Det kan til gengæld JS-parserens object Image:

var o = new Image();
o.onabort = function(){alert("abort")};
o.onerror = function(){alert("error")};
o.src = "sti/til/billede.jpg";

- men det bliver let noget bøvl at rode med  :o|

Løsningen bør helt oplagt findes serverside  ;o)

/mvh
</bole>
Avatar billede w13 Novice
27. oktober 2008 - 15:04 #5
prebenrunge?
Avatar billede nyp Nybegynder
28. oktober 2008 - 21:36 #6
Man kan også bruge Ajax til at teste om et billede findes, bruger selv ext ajax function (findes på extjs.com), der findes sikkert mange andre der også fungerer.

var testImgExists = function(imageUrl){
  Ext.Ajax.request({
    url: imageUrl,
    success: function(){
      alert("Findes");
    },
    failure: function(o){
      alert("Findes ikke");
    }
  });
    };
Avatar billede prebenrunge Nybegynder
30. oktober 2008 - 21:19 #7
undskyld men jeg har ligget vandret et par dage. Jeg prøvede jeres foreslag og det er endt med at jeg bruger Olebole's da det ser ud til at virke som jeg ønskede og i de tilfælde billedet ikke er der virker onerror functionen hvor jeg så placerer mit standard billed med besked.
Avatar billede prebenrunge Nybegynder
04. november 2008 - 20:13 #8
olobole smider du ikke et svar, som jeg kan accepterer og lukke spørgsmålet
Avatar billede olebole Juniormester
08. november 2008 - 22:11 #9
Sorry ... det kommer her  =)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester