webForumDet fria alternativet

ta reda på höjden på en förladdad bild

JavaScript

5 svar · 297 visningar · startad av gekko

Medlem sedan okt. 200230 inlägg
Frågan#1

Jag har förladdat 3 bilder.
Sedan tar jag reda på den största höjden genom att skriva

images = new Array('1.gif','2.gif','3.gif');

var largest_height=0;
for(counter in images)
{
images_list[counter] = new Image();
images_list[counter].src = images[counter].src;
if(images_list[counter].height)
largest_height = images_list[counter].height;
}

i IE blir largest_height 27px vilket är den rätta höjden men
i NS blir höjden 0px

Ngn som vet hur man kan göra i NS för ta reda på höjden

Medlem sedan dec. 20025 483 inlägg
#2

I det kodexemplet du gav oss är:

images[counter].src == "undefined"

Har du lite mer kod att bjuda på månne?

:)

Medlem sedan juli 2000836 inlägg
#3

Det där scriptet såg lite skummt ut.
Prova detta:

images = new Array('1.gif','2.gif','3.gif'); 

var largest_height=0; 
images_list = new Array()
for(counter in images){
	images_list[counter] = new Image();
	images_list[counter].src = images[counter];
	if(images_list[counter].height>largest_height){
		largest_height = images_list[counter].height;
	}
}
Medlem sedan juni 20004 308 inlägg
#4

Hanteringen av bildladdning fungerar olika i Netscape och IE. När du laddar en bild i IE och läser av egenskapen för ex height så haltas script-exekveringen tills dess att bilden laddats (eller tills dess att timeout'en talar om att resursen inte finns). I Netscape fortsätter exekveringen glatt i hågen, bildens storlek sätts default till 0 tills dess att bilden laddats, då uppdateras egenskapen för height. Således, laddar du en bild och på raden efter försöker att läsa av dess storlek i Netscape kommer du med största sannolikhet att få 0 som svar.

Prova att ladda bilderna som vanligt och sedan läsa av storleken vid onload.

Medlem sedan okt. 200230 inlägg
#5

Problemet är att jag förladdar dem pga av att jag inte ska använda alla från början.

Medlem sedan dec. 20025 483 inlägg
#6

Som Jojoxx skrev, läs av storleken vid onload genom att använda koden som Johnsen gav dig:

window.onload = function(){
     //Johnsens kod...
};

:)

265 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)