webForumDet fria alternativet

Ladda stor bild vid musklick.

5 svar · 285 visningar · startad av mattiasnordin

mattiasnordinMedlem sedan maj 20012 080 inlägg
#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?

mattiasnordinMedlem 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...

:)

Jesper TMedlem 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>
mattiasnordinMedlem sedan maj 20012 080 inlägg
#4

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

mattiasnordinMedlem 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>

Peter SMedlem sedan dec. 20025 483 inlägg
#6

Detta:

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

Istället:

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

:)

127 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)