Avatar billede marleone Nybegynder
01. maj 2008 - 00:05 Der er 12 kommentarer

Indlæsning af billeder vha responseText? (Ajax)

Hej eksperter,

Jeg har lavet et ajax script, der sætter forskelligt indhold ind i et divtag, alt efter hvilket link der er trykket på.

Derudover har jeg implementeret prototype framework'et, til at vise en loading lightbox på mit contentdiv, når indholdet indlæses.

Mit problem kommer til udtryk, når der er billeder i det indhold der indlæses. Loading box'n forsvinder nemlig allerede, når selve koden er læst af Ajax objectet, hvilket er et godt stykke tid før selve billedet er indlæst af browseren.

Kort sagt, lightbox'n med loading logoet, forsvinder meget før billed(erne/et) er vist i browservinduet.

Findes der en løsning?? Mener at have set, det virke på andre sider..?!

KODE:
if(xmlHttp.readyState==4 && xmlHttp.status==200)
{
  document.getElementById(div).innerHTML = xmlHttp.responseText;
  //Prototype loading lightbox (stop/skjul)
  area.stopWaiting('bigBlackWaiting');
}
Avatar billede w13 Novice
01. maj 2008 - 10:14 #1
Du kan vel sætte en onload på billedet, og lade dén stoppe waiting-ikonet?
Avatar billede marleone Nybegynder
01. maj 2008 - 12:11 #2
Nej, det vil ikke løse problemet, da onload kun blive kaldt når en side bliver refresh'd, hvilket ikke sker når ajax skifter mit indhold (hvilket også er meningen med ajax)...
Avatar billede w13 Novice
01. maj 2008 - 12:15 #3
Jo, hvis du sætter en onload på selve billedet, dvs. <img src="bla.gif" onload="area.stopWaiting('bigBlackWaiting')">

Så vil den blive kørt, når billedet er loadet.
Avatar billede w13 Novice
01. maj 2008 - 12:15 #4
Jeg bruger det selv på et galleri.
Avatar billede marleone Nybegynder
01. maj 2008 - 12:23 #5
ahh snedigt :)

Hvad gør du så, hvis du ikke ved hvor mange billeder der findes på siden der bliver indlæst? Finder du med javascript kode, eller sætter du simpelthen bare onload="" manuelt på det sidste billede?
Avatar billede marleone Nybegynder
01. maj 2008 - 12:25 #6
Sidste spørgsmål.. :)

Normalt må man jo ikke bruge onload på f.eks. body ifølge XHTML Strict mm. Er dette ikke gældende for onload på img??
Avatar billede w13 Novice
02. maj 2008 - 09:47 #7
Ja, det kunne f.eks. bare sættes på det sidste. Det kunne sikkert også løses smartere, men det er svært at sige, når man ikke er 100% inde i din kode.

Jo, onload er helt valid i XHTML Strict - men den virker bare pokkers godt i alle browsere. :P
Avatar billede marleone Nybegynder
02. maj 2008 - 14:46 #8
okay, jeg prøvede at ligge et 1px gennemsigtigt billede i bunden af alle de sider, hvor indholdet skulle indlæses, men desværre læser browseren åbenbart de små billeder før de store, så det løste ikke helt mit problem.

Men tak alligevel, jeg har helt klart fået en ok løsning indtil videre.
Avatar billede w13 Novice
02. maj 2008 - 15:04 #9
Ja, jeg misforstod dig mht. at lægge en onload på det sidste billede.

Jeg tænkte, at hvis du indlæste en masse billeder vha. AJAX, så skulle onload'en bare på det sidste af disse billeder.

Onload'en _bør_ være på et af de indlæste.
Avatar billede olebole Juniormester
03. maj 2008 - 21:55 #10
<ole>

Der findes ingen onload-event på et img-element. Den findes på et Image objekt (var oImg = new Image()), men ikke på et img-element  ;o)

/mvh
</bole>
Avatar billede olebole Juniormester
03. maj 2008 - 22:00 #11
- eller det vil sige, den findes under 'intrinsic events' - men den er ikke til at stole på crossbrowser
Avatar billede w13 Novice
19. maj 2008 - 13:00 #12
Kommet videre?
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



IT-JOB

AURA A/S

Data Engineer

De Nationale Geologiske Undersøgelser for Danmark og Grønland (GEUS)

IT-systemadministrator søges til GEUS

Arbejdernes Landsbank

Data Governance Specialist