webForumDet fria alternativet

Är bild cachad?

21 svar · 1 217 visningar · startad av oskob

oskobMedlem sedan maj 20021 513 inlägg
#1

Hej!
Jag har ett litet script som laddar in bilder och visar dem. Jag har först en liten gif som visar att bilden laddas och sen när bilden är klar så visas den.
Jag använder mig av

imgPreload = new Image();
imgPreload.src = url;
imgPreload.onload=function(){
	placeLitebox(true);
}

men om bildern redan är cachad så skickar den aldrig någon imgPreload.onload. Kan man på något sätt kolla om den redan ligger i chachen utan onload?

Tack på förhand!

nitro2k01Medlem sedan aug. 20037 630 inlägg
#2

Mitt rad ar att lagga kasta om de tva sista kommandona. Nar du satter onload sa ar bilden redan laddad i de fall bilden finns i cache.

imgPreload = new Image();
imgPreload.onload=function(){
placeLitebox(true);
}
imgPreload.src = url;
oskobMedlem sedan maj 20021 513 inlägg
#3

Jahaa så är det. Tänkte att bilden måste ha en url innan man kan onloada den men det blir ju inte så.
Tack och mycket!

oskobMedlem sedan maj 20021 513 inlägg
#4

En liten off topicfråga bara:
Hur fel är det att använda innerHTML istället för createElement? Det blir så onödigt mycket kod när man använder createElement. Vilka fördelar har det?

nitro2k01Medlem sedan aug. 20037 630 inlägg
#5

Det är inte "fel" i sig, men jag gillar DOM-tänkandet bättre personligen. Och så blir det ju lätt fel om man inte tänker sig för, och t ex skriver el.innerHTML += "<span>Hallå</span>"; vilket kan skapa problem, t ex om innerHTML innehåller en Java-applet, en Flash-film eller form-element.
För att kunna använda document.createElement på ett bra sätt gäller det att kunna se på dokumentet både som HTML-kod och som ett träd.

sl0kMedlem sedan maj 2005523 inlägg
#6

Sen är väl inte innerHTML DOM standard? Tror inte det funkar i xhtml-dokument, dvs när man serverar dem som application/xhtml+xml.

zcorpanMedlem sedan dec. 20042 269 inlägg
#7

sl0k skrev:

Sen är väl inte innerHTML DOM standard?

Nej, inte än iaf.

sl0k skrev:

Tror inte det funkar i xhtml-dokument, dvs när man serverar dem som application/xhtml+xml.

Det fungerar i Opera 8 och Firefox 1.5.

oskobMedlem sedan maj 20021 513 inlägg
#8

Är javascript standard ö.h.t.?

Hur som helst så kom jag på en till sak:
Hur kollar jag om bilden Inte är laddad?

if ( bild.loaded ) {
bla;
}

Typ.

nitro2k01Medlem sedan aug. 20037 630 inlägg
#9

oskob skrev:

Är javascript standard ö.h.t.?

Javascript är baserat på det som kallas ECMA-262 aka ECMAScript. Specen finns här: http://www.ecma-international.org/publications/standards/Ecma-262.htm

oskob skrev:

Hur som helst så kom jag på en till sak:
Hur kollar jag om bilden Inte är laddad?

if ( bild.loaded ) {
bla;
}

Typ.

Varför vill du egentligen göra det?

zcorpanMedlem sedan dec. 20042 269 inlägg
#10

nitro2k01 skrev:

Javascript är baserat på det som kallas ECMA-262 aka ECMAScript.

Jag trodde det var tvärt om...

nitro2k01Medlem sedan aug. 20037 630 inlägg
#11

Och du har rätt!

oskobMedlem sedan maj 20021 513 inlägg
#12

Jag vill göra så för att som det är nu så körs en funktion om bilden inte är laddad som visar en liten loading-gif. När bilden är laddad visas bilden. Men när jag byter till nästa bild så kört ändå loading gifen först och sedan visas bilden så det blinkar till. Vill gärna slippa det.

PepeJeriaMedlem sedan feb. 2003779 inlägg
#13

sl0k skrev:

Sen är väl inte innerHTML DOM standard? Tror inte det funkar i xhtml-dokument, dvs när man serverar dem som application/xhtml+xml.

IE stöder inte ens xhtml, sa jag skulle nog inte oroa mig för detta...

sl0kMedlem sedan maj 2005523 inlägg
#14

PepeJeria skrev:

IE stöder inte ens xhtml, sa jag skulle nog inte oroa mig för detta...

?
Vem sa ngt om ie ?
innerHTML är inte DOM standard..
Hade en gång problem med innerHTML vid användandet av application/xml+xhtml i firefox, har senare förstått att detta var en bugg i den ff version jag använde.

PepeJeriaMedlem sedan feb. 2003779 inlägg
#15

Jag menade mer att varför oroa sig om det funkar i xhtml eller inte, när den browsern som har mest användare inte ens klarar av att visa en xhtml sida

oskobMedlem sedan maj 20021 513 inlägg
#16

Men browsern som har mest användare kommer snart (?) få stöd för alla härligheter du kan tänka dig!
Hur som helst.
Finns det något sätt att köra en kodsnutt om bilden inte är laddad men ge fan i att köra den om den redan finns i cache?

sl0kMedlem sedan maj 2005523 inlägg
#17

oskob skrev:

Men browsern som har mest användare kommer snart (?) få stöd för alla härligheter du kan tänka dig!

Om du menar ie7 så kommer inte den att stödja application/xml+xhtml

nitro2k01Medlem sedan aug. 20037 630 inlägg
#18

oskob skrev:

Men browsern som har mest användare kommer snart (?) få stöd för alla härligheter du kan tänka dig!
Hur som helst.
Finns det något sätt att köra en kodsnutt om bilden inte är laddad men ge fan i att köra den om den redan finns i cache?

Till vilken nytta? Om det gäller en pre-loader så är det ingen fara om bilden redan finns i cache. Då skippas bara koden. (Det var ju det orginalfrågan handlade om för övrigt, eftersom bilden laddades så snabbt ur cache så hann du inte sätta onload-handler på den)

oskobMedlem sedan maj 20021 513 inlägg
#19

sl0k: Är det sanning?! Då blev jag plötsligt trött. Härligt med drivkraft!

Nitro:
Så här beter sig mitt script:
Den skickar först en placeImage(false); och sen kollar den om bilden finns i chache och skickar i så fall en placeImage(true);. Jag vill inte att placeImage(false); ska skickas ö.h.t. om det finns i cache.

	placeImg(false);  ( <- ska INTE skickas om det redan ligger i chache)
			
	imgPreload = new Image();
	imgPreload.onload=function(){
		
		placeImg(true);
		
	}
	imgPreload.src = url;

placeImg(false) slänger fram en loading-bild. Jag vet inte om jag missförstår dig eller om du missförstår mig. Jag utgår ifrån det senare då min förmåga att förklara saker och ting är näst intill obefintlig :x

sl0kMedlem sedan maj 2005523 inlägg
#20

oskob skrev:

sl0k: Är det sanning?! Då blev jag plötsligt trött. Härligt med drivkraft!

http://blogs.msdn.com/ie/archive/2005/09/15/467901.aspx

Genererad på 375 ms · cache AV · v20260730165559-full.f96bc7eb