webForumDet fria alternativet
Logga in / Bli medlem

Ladda stor bild vid musklick.

JavaScript

5 svar · 285 visningar · startad av mattiasnordin

Medlem sedan maj 20012 080 inlägg
Trådstart#1

God morgon alla,

Tänkte skapa en funktion som startar en gif animering när man klickar på en bild. Gifanimeringen är 1Mbyte stor så det skulle vara bra om man kunde se till att den inte laddades förens övriga sidan är laddad.

Finns det någon bra strategi för detta senario?

Medlem sedan maj 20012 080 inlägg
#2
<img OnClick="funStartAnim();" name="ThePictureFrame" align=right border=1 src="animation3_static.gif" width=250>

<script>
function funStartAnim(){
ThePictureFrame.src="animation3.gif"
}
</script>

Jag använder ovan för att starta animeringen. Hur fungerar det? Laddas animation3.gif innan eller först när funktionen köres?

Antar att man inte kan ladda orginalbilden efter att man har kört animationen? Hur vet mitt skript att animationen är klart. Hmmm. Mindre viktigt...

:)

Medlem sedan nov. 20017 144 inlägg
#3

Så här kanske:

<script type="text/javascript">
<!--
var imagesSrc=["animation3.gif"]
	
var imagesOnLoad="document.getElementById('status1').innerHTML='Laddar bilder, '+parseInt(images.loaded/images.toload*100)+'% klart.'";
var imagesOnAllLoaded="document.getElementById('status2').innerHTML='<input type=\"button\" value=\"Kör\" onclick=\"ThePictureFrame.src='animation3.gif';\">'";

var images=new Object();
images.loaded=0;
images.starttime=new Date();
images.toload=imagesSrc.length;
for(i in imagesSrc){
	images[i]=new Image();
	images[i].onload=function(){
		images.loaded++;
		document.getElementById("progressbar").style.width=images.loaded * parseInt(150/imagesSrc.length) +"px";
		if(imagesOnLoad.length>0){ eval(imagesOnLoad); }
		if(images.loaded==images.toload&&imagesOnAllLoaded.length>0){
			images.stoptime=new Date();
			images.loadtime=images.stoptime.getTime()-images.starttime.getTime();
			eval(imagesOnAllLoaded);
		}
	}
	images[i].src=imagesSrc[i];
}
//-->
</script>

<div style="height:10px;width:150px;border:1px solid black;padding:0;margin:0;"><div style="background:blue;width:2px;height:5px;" id="progressbar"></div></div>
<div id="status1"></div>
<div id="status2"></div>
Medlem sedan maj 20012 080 inlägg
#4

Jag ska prova ovan. JesperT innebär min kod att bilden laddas innan funktionen anropas?

Medlem sedan maj 20012 080 inlägg
#5

Vad är det i koden på inlägg #857697 som inte fungerar med Mozilla. Det händer inte något när man klickar på bilden. Grr...

REDIGERING: Så här skulle det ju vara...

<script language="JavaScript">
function funStartAnim(){
**document.**ThePictureFrame.src="animation3.gif"
}
</script>

Medlem sedan dec. 20025 483 inlägg
#6

Detta:

function funStartAnim(){
    [b]ThePictureFrame[/b].src="animation3.gif"
}

Istället:

...
document.images["ThePictureFrame"].src = "animation3.gif";
...

:)

270 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)